说说你对23种设计模式的理解
1、模板方法模式【Template Method】
3、实现代理模式需要额外的工作,有些代理模式的实现非常复杂。
4、工厂模式【Factory Method】
6、23 种设计模式的分类表范围\目的创建型模式结构型模式行为型模式类模式工厂方法(类)适配器模板方法、解释器对象模式单例
7、命令设计模式帮助我们将一个操作(撤销、重做、复制、粘贴等)封装成一个对象。简而言之,这意味着创建一个类,包含实现该操作所需要的所有逻辑和方法。这样做的优势如下所述。
8、我们并不需要直接执行一个命令。命令可以按照希望执行。调用命令的对象与指导如何执行命令的对象解耦。调用者无需知道命令的任何实现细节。如果有意义,可以把多个命令组织起来,这样调用者能够按顺序执行它们。例如,在实现一个多层撤销命令时,这是很有用的。
9、如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。
10、TEMPLATE METHOD模板方法模式
11、抽象工厂模式【Abstract Factory】
12、一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
13、一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为。
14、一个抽象类中,有一个主方法,再定义1…n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用 。
15、解释器模式【Interpreter】
16、设计要求实例化角色的任何改变不应当影响客户端,或者说实例化角色的改变对客户端是完全透明的。
17、里氏替换原则(LSP liskov substitution principle)
18、虽然在系统中使用继承是没有问题的,但是由于抽象化角色和具体化角色需要独立变化,设计要求需要独立管理这两者。
19、职责链模式【Chain of Responsibility】
20、智能引用(Smart Reference)代理。
21、开闭原则(open closed principle)
22、单一原则(Single Responsibility Principle)
23、依赖倒置原则(dependence inversion principle)
24、一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象时可以使用中介者模式。
25、副本监控场景。备忘录可以当做一个临时的副本监控,实现非实时和准实时的监控。
26、一个软件实体通过扩展来实现变化,而不是通过修改原来的代码来实现变化。实现一个热插拔的效果。
27、需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作”污染”这些对象的类,也不希望在增加新操作时修改这些类。
29、一个类只负责一项职责,尽量做到类只有一个行为原因引起变化;
30、事务型行为和日志记录:事务型行为和日志记录对于为变更记录一份持久化日志是很重要的。操作系统用它来从系统崩溃中恢复,关系型数据库用它来实现事务,文件系统用它来实现快照,而安装程序(向导程序)用它来恢复取消的安装。
31、同步化(Synchronization)代理。
32、迪米特原则(law of demeter LOD)
33、对象结构中对象对应的类很少改变,但经常需要在此对象结构上定义新的操作。
34、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。
35、CHAIN OF RESPONSIBLEITY责任链模式
36、保护(Protect or Access)代理。
37、买火车票不一定在火车站买,也可以去代售点。
38、一张支票或银行存单是账户中资金的代理。支票在市场交易中用来代替现金,并提供对签发人账号上资金的控制。
39、一个构件有多于一个的抽象化角色和实例化角色,系统需要它们之间进行动态耦合。
40、FACTORY METHOD抽象工厂
41、一个对象应该对其他对象有最少的了解,即一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。
42、部件之间的层次关系,也就是店面的层次关系是,总店下有分店、分店下可以拥有加盟店。
43、一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解时可以使用中介者模式。
44、接口隔离(interface segregation principle)
相关文章