《2022年软件设计师:设计模式简介 .pdf》由会员分享,可在线阅读,更多相关《2022年软件设计师:设计模式简介 .pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1. Mediator 模式:Mediator 的意思是中介者、调节者、传递物,顾名思义,这个模式在程式中必然负担一个中介、调节、传递的工作. Mediator 模式用一个中介的物件来封装物件彼此之间的交互,物件之间并不用互相知道另一方,这可以降低物件之间的耦合性,如果要改变物件之间的交互行为,也只需要对Mediator加以修改即可 . 其 UML 图如下:2.Simple Factory 模式(又称 Static Factory 模式) ,一个 Simple Factory 生产成品,而对客户端隐藏产品产生的细节.实作时定义一个产品介面(interface) ,并透过特定静态方法来建立成品.
2、 假设有一个音乐盒工厂,购买音乐盒的客人不用知道音乐盒是如何制作的,他只要知道如何播放音乐盒就可以了,以UML 类别图来表示以上的概念:如上图所示的, MusicBoxDemo 代表了客户的角色,它只依赖于IMusicBox 介面,而不关心特定的实作,实际如何产生IMusicBox 的实例由MusicBoxFactory 完成,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 14 页 - - - - - - - - - 3.Abstract Factory 模式简单的说,
3、在Abstract Factory 模式中将具体的Product 封装在具体Factory 实现中,而客户仍只要面对Factory 与 Product 的抽象介面, 避免依赖于具体的Factory与 Product, 由于 Factory封装了所必须的Product,所以要更换掉所有的元件,只要简单的抽换掉Factory 就可以了,不用修改客户端的程式. 4.Builder 模式简单来说, 建筑者模式适用的场合,在于使得您可以依赖抽象的建筑蓝图,而实际建造时可以使用不同的实例,这是其之所以命为Builder 的原因 . Gof 中有给出了一个不错的例子,以设计文件剖析器为例,该剖析器可以将文件
4、转换为其它的格式,以DOC 文件剖析器为例好了,假设希望析剖器可以将DOC 文件转换为RTF 或是 PDF 文件,可以如下设计结构:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - - - - - - - - - 5.Factory Method Factory Method 中的 AbstractOperator 中拥有一个抽象的factoryMethod() 方法,它负责生成一个 IProduct 类型的物件, 由于目前还不知道将如何实现这个类型,所以将之
5、推迟至子类别中实现,在AbstractOperator 中先实现IProduct 操作介面沟通的部份,只要介面统一了,利用多型操作即可完成各种不同的IProduct 类型之物件操作. 也就是说,对AbstractOperator 来说,其操作的IProduct 是可以抽换的 . 6.Prototype 模式Prototype 模式的作用有些类似上面的描述,您在父类别中定义一个clone()方法,而在子类别中重新定义它, 当客户端对于所产生的物件有兴趣并想加以利用,而您又不想破坏原来的物件,您可以产生一个物件的复本给它. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
6、- - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 14 页 - - - - - - - - - 7.Registry of Singleton 模式事实上 Registry of Singleton 的真正优点正在于此,您可以使用父类别来统一管理多个继承的子类别之Singleton 实例,您可以在需要的时候再向父类别注册子类Singleton,必要时随时调整传回的子类别Singleton 8.Default Adapter 模式它使用一个中介的Adapter 类别来将真正感兴趣的事件实作类别,配接至事件处理介面,9.Adapter 模式 - Ob
7、ject Adapter 您的电脑是个旧电脑,新的滑鼠都在使用USB 接口了,而您的电脑上并没有USB,而只有一个 PS2接口,这时您可以使用一个USB 转 PS2的接头作为转换,这样您的电脑就可以使名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 14 页 - - - - - - - - - 用新滑鼠了(当然您也可以使用USB 扩充卡,意思是相同的). 透过 Adapter 模式,您原有程式中已设计好的类别不用更动,就可以引进新类别的功能,10.Adapter 模式 -
8、Class Adapter Adapter 模式的另一种作法是Class Adapter 模式,在这个模式下,Adapter 直接继承Adaptee(要引进的新类别) ,以拥有当中的成员及方法,在C+中的话可以这么作:11.Bridge 模式在 Gof 的书中指到Bridge 模式的目的: “将抽象部份与它的实现部份分离,使它们都可以独立地变化 .”名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 14 页 - - - - - - - - - 12.Composite 模式
9、无论是文字、线段或长方形,甚至是组合后的图片元件,它们都拥有一个共同的行为,使用者基本上并不会感觉出它们之间的操作有任何的不同,您可以拖曳、放大、缩小等等,这些行为都是一致的. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 14 页 - - - - - - - - - 13.Decorator 模式用 Decorator 模式来组织结构,您可以动态的为一个物件加入一些功能(像是为JTextArea加上卷轴),而又不用修改JTextArea 的功能14.Facade模式应
10、用程式本身将不直接依赖于您的元件,而是依赖一个介面,当您想要更改某个商务行为的实作时,只要修改实现的类就可以了,应用程式本身不用作任何修改. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 14 页 - - - - - - - - - 15.Flyweight 模式Flyweight 的目的在于运用共享技术,使得一些细粒度的物件可以共享. Flyweight 模式在传回物件时,所使用的是工厂模式,使用者并不会知道物件被创造的细节,下图是 Flyweight 模式的结构图:
11、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 14 页 - - - - - - - - - 16.Proxy 模式对 Proxy 模式的目的给定为:为其它的物件提供一种代理,以控制对这个物件的访问.由这句话所延伸出来的意思是,根据您的目的不同,您的代理物件将负有不同的责任,因为产生多种不同的代理情况. 这是 Static Proxy 的基本范例,然而如您所看到的,代理物件的一个介面只服务于一种类型的物件,而且如果要代理的方法很多,势必要为每个方法进行代理,Static
12、Proxy 在程式规模稍大时就必定无法胜任. Java 在 JDK 1.3 之后加入协助开发Dynamic Proxy 功能的类别,我们不必为特定物件与方法撰写特定的代理,使用Dynamic Proxy ,可以使得一个handler 服务于各个物件,17.Chain of Responsibility 模式Chain of Responsibility 目的为:使多个物件都有机会处理请求,以避免请求的发送者与接收者之间的耦合关系,将这些物件组合为一个链,并沿着这个链传递该请求,直到有物件处理它为止 . 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
13、 - - - - - 名师精心整理 - - - - - - - 第 9 页,共 14 页 - - - - - - - - - 18.Command 模式19.Interpreter 模式对于一个具有层次节点关系的问题来说,如果您要剖析每一个节点,您可以使用Interpreter模式,直译器模式有些类似演算法中的个别击破方式,对每一个父节点我们剖析出其子节点组合,然而交给子节点剖析物件继续剖析,直到剖析至终端节点为止. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 14
14、 页 - - - - - - - - - 20.迭代器( Iterator )采取迭代器( Iterator)的方法,一个迭代器提供一个特定的遍访方法,而使得设计人员无需关心聚合物件的类型使用 Iterator 模式,可以将循序访问聚合对象的方法从该对象中分离出来,从而使得聚合对象的设计单纯化,对客户来说,他所要知道的是所使用的Iterator 而不是聚合对象的类型. 21.Memento 模式与其在物件内建立复原机制,不如将复原机制从物件中脱离出来,这个时候您可以使用Memento 模式来达成这个功能. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
15、 - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 14 页 - - - - - - - - - 22.Observer 模式Observer 模式中的主角为主题(subject)与观察者 (observer) ,观察者订阅它感兴趣的主题,一个主题可以被多个观察者订阅,当主题的状态发生变化时,它必须通知(notify )所有订阅它的观察者,观察者检视主题的状态变化,并作出对应的动作,所以Observer 模式也称之为 Publish-Subscribe 模式 . 23.State 模式这次并没有用流程控制来进行状态转换,而由物件自行控制自己的状态,与必须表现的
16、行为,这个方式就是State 模式名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 14 页 - - - - - - - - - 24.Strategy 模式这种策略采用的情况,可以将策略加以封装为一个物件,而不是将策略写死在某个类中,如此一来,策略可以独立于客户端,随时增加变化、增加或减少策略,即使是修改每个策略的内容,也不会对客户端程式造成影响. 25.Template Method 模式一些程式而言, 我们希望规定一些处理的步骤、流程或骨架, 就像是上例中的step
17、1 到 step3一样,至于流程中的step1 到 step3 如何实作并不规定,而留给实作的人自行决定,这就是Template Method 模式的目的名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 14 页 - - - - - - - - - 26.Visitor 模式名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 14 页 - - - - - - - - -