一句话解释设计模式

设计模式一共由6大原则和23种设计模式,一下子很难将它们全部说出来,但是可以用一句话,将它们的特点的概括出来,然后在这个特点上进行展开,这样就容易多了。


六大原则

1.单一职责原则
无论是变量、方法还是类、接口等等,它们的职责或代表的含义负责的功能都应该是单一独立的,一个模块不能负责超过两种事情,一种事情也尽量不要在多个地方进行实现。

2.里氏替换原则
凡是父类、接口可以使用的地方,它们的子类、实现类都可以进行无缝替换。

3.依赖倒置原则
模块之间的依赖应该通过接口、父类发生,而不是具体的实现类发生。

4.接口隔离原则
客户端不应该依赖它不需要的接口,类与类之间的依赖应该建立在最小的接口上。

5.迪米特法则
一个对象应该对其他对象保持最少的了解。简单的来说,就是一个类对自己依赖的类知道的越少越好,对于被依赖的类,向外公开的方法越少越好。(但是不应该类的正常操作和功能)

6.开闭原则
软件实现应该对扩展开放,对修改关闭。其含义是说一个软件实体的应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化。


23种设计模式

1.单例模式
通过私有化构造函数,从本来静态方法获取实例从而保证该系统种此类只有一个实例。

2.工厂模式
2.1 普通工厂模式
父类决定实例的生成方法,所要生成的具体的类全部交给子类负责。
(这样就可以将生成实例的框架和实际负责生成实例类的解耦)

2.2 简单工厂模式
在不需要多个工厂类的情况下,将工厂类方法变为静态方法。

2.3 抽象工厂模式
使用一个创建一系列相关或相互依赖的接口,而无需关心它们的具体的类。
(抽象工厂将抽象零件组装成抽象产品,而不是关心零件的具体实现)

3.模板方法模式
在父类种定义好处理流程的算法框架,在子类中实现具体处理。
(将共同的封装进父类中,具体的处理交给子类)

4.建造者模式
将负责对象的创建和组装的过程进行封装隔离,对于不同组装就会产生不同的产品。
(建造者模式比工厂模式多了一个指挥者的角色。在建造者模式中,指挥者决定了建造者角色中方法的调用,在模板方法模式中,父类决定子类的方法的调用顺序)

5.代理模式
为其他对象提供一个代理来控制对这个对象的访问。
(代理和真正的实体实现同一接口,具有一致性。只有在必要的时候,代理才会将实体实例化)

6.原型模式
用原型实例指定创建对象的种类,并通过clone这个原型来创建新的对象,而不是通过类名直接new 出一个实例。
(注意浅拷贝与深拷贝)

7.责任链模式
将多个处理请求的对象按照一定顺序连成一条链,并沿着该条链处理请求,直到有一个对象处理他。
(可以解除发送者和接收者之间的耦合,消除if-else的好方法)

8.装饰者模式
动态地给一个对象添加一些额外的功能。
(装饰者与被装饰者具有一致性,这样就可以不断为装饰者添加功能)

9.策略模式
定义一系列解决问题的算法,将他们分别封装起来,并且使它们之间可以相互替换。

10.适配器模式
将一个类的接口转换成调用者希望的另一个接口。
(将原本由于接口不兼容而不能在一起工作的那些类可以一起工作)

11.迭代器模式
提供一种方法访问容器的各个元素,而又不暴露对象的内部细节。

12.组合(合成)模式
将对象组合成树性结构以表示部分-整体的层次结构。
(组合模式的核心就是让容器和内容具有一致性)

13.观察者模式
定义对象间一种一对多的依赖关系,以便当一个对象的状态发生改变的时候,所有其他依赖它的对象都能得到通知并自动更新。
(原理是在被观察者中增加List-储存观察者,每次被观察者有什么变化时候,调用方法,统一调用List中观察者的被通知的方法)

14.外观模式
为子系统中的一组接口提供一个一致对外操作方法。
(外观模式定义了一个高层接口,使得这一子系统更加容易使用)

15.备忘录模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到保存的状态。

16.访问者模式
设置 一个类访问数据结构中的元素,并把各元素的处理交给访问者类。
(在访问者模式中,数据结构于处理被分离开)

17.状态模式
以状态为类型,封装对象因为状态改变而引起的行为变化。
(核心用类表示状态)

18.享元模式
运用共享奇数有效的支持大量细粒度的对象。
(通过尽量共享实例来避免new出实例)

19.桥梁模式
将抽象部分和实现部分进行分离,使它们可以进行独立进行变化。
(将类的功能层级结构和实现层次结构进行分离,桥梁模式作用就是连接二者)

20.解释器模式
给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。( 使用较少)

猜你喜欢

转载自blog.csdn.net/FateRuler/article/details/82415862