本文主要是介绍设计模式简简简化版,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
设计模式是什么?
在各种类型的软件开发过程中,有经验的大佬给出的一些解决方案(模板),它被反复使用,是他们代码设计经验的总结。
学习、使用设计模式有什么作用、好处?
使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。各种设计模式有自己的代码逻辑,可以更好地表示各个对象的关系。比如电子厂、餐厅、超市,这些现实场景的管理方式、结构都有一些特点,使用设计模式就可以很好地理清、实现每个场景里各个部分的关系。
六大原则
1、开闭原则:对扩展开放,对修改关闭。程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。
2、里氏代换原则:对开闭的补充,任何基类可以出现的地方,子类一定可以出现。
3、依赖倒转原则:是开闭原则的基础,具体内容:针对接口编程,依赖于抽象而不依赖于具体。
4、接口隔离原则:使用多个隔离的接口,比使用单个接口要好。降低类之间的耦合度。
5、迪米特法则,又称最少知道原则:一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。
6、合成复用原则是指:尽量使用合成/聚合的方式,而不是使用继承。
23种设计模式
常用概述
工厂模式
抽象工厂模式
单例模式
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
优点:节省系统资源。缺点:没有接口、不能继承
1、 饿汉式:每次都产生一个对象,效率高,但容易产生垃圾对象。
2、懒汉式:先判断对象是否创建过,没有再创建,效率更低。
适配器模式
作为两个不兼容的接口之间的桥梁。它结合了两个独立接口的功能。
这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。类似转接头的作用。
优点:提高类的复用、让两个没有关联的类乐器运行、灵活
缺点:使用过多适配器可能让系统零乱,对整体结构可能不太清晰。
组合模式
是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。类似电脑文件夹的管理。
优点:高层模块调用简单、忽略对象之间的差异
缺点:在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。
装饰器模式
允许向一个现有的对象添加新的功能,同时又不改变其结构。类似游戏里学习技能。
优点:动态扩展一个实现类的功能,继承的一种替代模式,不会相互耦合。
缺点:多层装饰较为复杂。
命令模式
请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。类似班长。
优点:降低耦合度、容易将新命令加入系统中。
缺点:使用命令模式可能会导致某些系统有过多的具体命令类。
观察者模式
一个修改,多个更新。当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。类似拍卖过程。
优点:观察者和被观察者式抽象耦合的、建立一套触发机制
缺点:直接、间接观察者多会使通知花费很多时间;
如果在观察者和观察目标之间有循环依赖的话,观察目标会触发它们之间进行循环调用,可能导致系统崩溃;
观察者不知道被观察者是怎么变化的,只知道变化了这个结果。
策略模式
一个类的行为或其算法可以在运行时更改。将行为或算法封装起来,可互相替换。
我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。类似买装备。
优点:算法可以自由切换、避免多重if...else...、扩展性好
缺点:策略类会增多、所有策略类都要对外暴露
模板模式
一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。比如动物的行为具体到猫和狗。
优点:封装不变部分、扩展可变部分;重要,复杂的方法可以考虑作为模板方法
缺点:每个不同的实现都需要一个子类,可能导致类的数量增加,系统更加庞大
代理模式
一个类代表另一个类的功能。为其他对象提供一种代理以控制对这个对象的访问。
我们创建具有现有对象的对象,以便向外界提供功能接口。工具人。
与装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。
优点:职责清晰、高拓展性、智能化
缺点:再客户端和真实主题之间增加代理对象,可能导致请求处理变慢
实现需要额外的操作,有些实现非常复杂
本文章内容大部分来自菜鸟教程,选取了一些我认为能快速帮助了解一些常用设计模式的内容,代码太多,比较耗费时间,可以自己查阅相关书籍或者搜索学习。
这篇关于设计模式简简简化版的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!