我理解的设计模式——下

来源:互联网 发布:网络电信诈骗防范措施 编辑:程序博客网 时间:2024/05/16 12:23

      上一篇博客对设计模式的前十个模式进行了理解和剖析,这一篇博客将《大话设计模式》中剩下的一些模式进行总结,再次对设计模式理解和认识,在总结的过程中我发现我虽然是对每一个模式依次的理解,但是最后的收获却是对整个设计模式这个范畴的一个统一理解和认识,认识了设计模式的中心思想,认识了设计模式的惯用手法,认识了设计模式的最终目的,但是由于小生道行不够所以还有些欠缺的地方,相信会在以后的学习和运用中会对设计模式不断加深理解,也会有新的理解。

十一、抽象工厂模式

         抽象工厂模式对比工厂模型来看,总体上是将与原来抽象工厂接口相关的类抽象为了一个统一的接口,这个接口可以实现不同的类,而这些类又可以通过继承分类实现若干不同的抽象产品,而抽象工厂接口便可以依据这些产品的分类生成具体的工厂,如此一来就可以说,抽象工厂模式是提供了一个接口,这个接口用来创建一系列相关或相互依赖的对象,不再需要指定他们具体的类;最后到客户端便可以依据想要创建的不同产品对象,用不同的具体工厂去创建,实现了客户端同实例的创建过程分类。

         简单来看:总体上看是为了方便不同产品分类实现,将相互依赖的这些产品类及其工厂类都抽象到了接口层面上并定义相关了方法。

十二、状态模式

         这种模式运用的情况是:一个对象的行为取决于它的状态,运行时根据给出的状态改变它的行为。它将状态的判断逻辑放到了表示一系列状态的相关类中,通过这些类判断给出的条件是否符合自身条件,符合则执行自身方法,否则会通过用于设置状态的方法将条件转给另一个状态类,如此下去直到该条件找到属于自己的状态。

十三、适配器模式

         该模式简单的来看就如同生活中我们用于连接两个粗细不同的管子时用的套管一样;如此,当软件中遇到一些类由于接口的不兼容不同一起工作时会用到该模式,在代码中该模式主要用的办法是:在目标类和需要适配的类之间加一个类,这个类继承目标类,从而会将目标类的相应方法继承下来,在继承下来的方法中去实现需要适配的类的方法。

十四、备忘录模式

         该模式中有一个备忘录类,由该类来将发起状态类的相关数据存储;发起状态类中会去创建相应备忘录和恢复备忘录的方法。

十五、组合模式

         组合模式展现的是一个层次结构模式,就如同菜单一样,子菜单的一项也可以为下一级的父级;在代码中的表现是;声明了一个类,这个类提供了添加叶或枝的功能,而添加的这些叶或枝所属的类是自身类或自身子类;如此一来,方法一步步继承下去便构成了一个层级的结构。

十六、迭代器模式

         该模式中大致分为了两种类,分别是:聚集类和迭代器类,由于为了减少同客户端的耦合,两者都上升到抽象层面,分别有抽象的聚集类和抽象的迭代器类。在代码中的工作方式是:首先生成一个聚集对象,为聚集对象中添加内容,通过迭代器的中的方法将聚集对象传给迭代器,从而实现由迭代器代表聚集对象对聚集对象中的内容操作;由于迭代器中声明了一系列对传入的聚集对象操作的方法,从而可以依次访问聚集对象的各个元素。

十七、单例模式

         该模式简单来看就是要求对象的单一性,通过判断来确保对象的单一,如果不存在该实例则实例化,否则调用已实例的对象即可。

十八、桥接模式

         该模式是将抽象的部分和实现的部分分离开来,在该模式中抽象类会有相应的方法指明实现类,具体指明是在客户端来实现。通过该方法实现了抽象和实现的连接。

十九、命令模式

         命令模式中指明,它将一个请求封装成一个对象,从而命令类会泛化出相应的独立化的命令,分别去实现和分别执行;在该模式中命令类需要指明命令接收者,同时接收者将自己能够执行的方法赋予相应的具体的单个命令类(将自己的方法添加到对应的命令类的方法中);命令类会将自己的命令方法添加到服务类的列表中,类表中的方法会通过执行的方法依次执行,而这些执行的命令实际就是执行者的方法(通过方法包装实现)。

二十、职责链模式

         这个模式主要是使多个对象都有机会处理请求,将这些对象连成一条链,沿着这条链处理该请求,如果该对象可以处理该请求则处理,如果无法处理该请求则将请求转交给下一个对象,如此下去,直到有一个对象处理该请求。在代码中:它设有一个处理请示的类,该类提供设置下一个对象的方法(即说明如果该对象无法处理该请求则将请求转交给哪一个对象的方法),而该方法的使用主要是在客户端使用(在客户端设置层级关系),而由该类泛化出来的具体处理类会处理他们所负责的请求,同时还有访问后继者对象的方法,判断自己是否可以处理该请求,如果可以则处理,否则将请求转交给下一个对象。

二十一、中介者模式

         该模式用一个中介者对象通过一个方法封装一系列对象的交互,在具体的同事类中需要指出中介者,因为同事类中的方法中需要调用中介者的相关方法,在客户端中实例化的过程中,实例中介者,同时在实例同事类的过程中指明实例的中介者,同时要为中介者指明具体的同事对象,如此实现了以中介者为中心的各个同事对象之间的交互。

二十二、享元模式

         该模式的中心是共享已经实例化的对象,该模式中的享元工厂类中会有获得实例的方法,该方法中会判断要实例化的对象是否存在,如果该实例已经存在则返回已生成的对象,如果该对象不存在则创建一个新的对象。如此便可以减少需要实例化类的数量。

二十三、解释器模式

         在该模式中首先会定义一种文法,给定一种语言,同时定义一个解释器类,在解释器类中会根据需求定义一种对给定语言的解释模式。从而可以依据输入的内容和自己需要解决的问题给出适当的解释器对象。

二十四、访问者模式

         该模式的中心在对象结构类,在对象结构中有添加和移除元素的方法,所以可以添加和移除具体的元素到一个列表,同时对列表中的对象遍历操作,而元素类中的方法需要指定相应的访问者类,同时用元素的方法包装访问者类的方法,由于访问者类的方法中指定了相应的操作,所以便可以在客户端中以对象结构类的具体实例为中心操作相应的元素所对应的访问者类的相应操作。


0 0
原创粉丝点击