`
zl198751
  • 浏览: 273471 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

设计模式学习

阅读更多

组合模式:

组合模式可以形象的比如成树,有叶子节点(Leaf),树枝节点(Composite),这两个节点都需要继承节点的属性(Component), 这样用户使用起来才能达到透明性。且需要具备子节点的管理特点。

子节点管理操作的不同可以分两种组合结构:子节点操作放在Component中

 

 观察者模式:

观察者(Observer)模式又名发布-订阅(Publish/Subscribe)模式。GOF 给观察者模
式如下定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依
赖于它的对象都得到通知并被自动更新。

GOF 给出了以下使用观察者模式的情况:
1) 当一个抽象模型有两个方面, 其中一个方面依赖于另一方面。将这二者封装在独立
的对象中以使它们可以各自独立地改变和复用。
2) 当对一个对象的改变需要同时改变其它对象, 而不知道具体有多少对象有待改变。
3) 当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换言之, 你不希望
这些对象是紧密耦合的。

观察者可以按是否把“目标对象”变化细节主动给观察者分为:“推模式”和“拉模式”。

 

策略模式(Strategy): 多态的简单利用。

区分变化的和不变的。

不变化的封装在基类中。变化的先分组,将高层通用接口封装在基类中,具体实现由子类决定。

 

 

 

建造模式(Build):将产品的生产过程抽象出“建造抽象类”,由具体的方法生产具体的产品。指导者调用抽象类中的方法创建产品,不用关心具体建 造细节。而使用者直接使用指导者创建产品。 建造模式与工厂方法很像,区别:在原来的工厂方法模式中,产品内部的表
象是由产品自身来决定的;而在建造模式中则是“外部化”为由建造者来负责。这样定义一个
新的具体建造者角色就可以改变产品的内部表象,符合“开闭原则”。

 

门面模式(facade): 简单的将子系统的被调用方法都封装在一个类中供其他客户使用。

 

命令模式:是回调函数在面向对象领域的应用。

将命令抽象出接口,再把一系列的具体命令传入invoker类统一调用。

若命令中实现了undo,redo操作,那么invoker中可以进行命令的回滚,重做,以及事务的实现。

 

适配器模式(Adapter) :适配器模式就想是变压器一样,是将已有实现向目标接口的转换。比如在我的系统中已经设计好了接口结构,客户已经在使用这个接口,但是对于实现我想调用已 有的设计,但是已有的设计跟我的接口不一致,那么现在就需要使用适配器模式,将已有实现转换成我的接口的形式。

<!--{12838463842520}-->

将适 配器模式分为类适配器模式和对象适配器模式。区别仅在于适配器角色对于被适配角色的适配是通过继承完成的还是通过组合来完成的. 一般使用对象适配器。

与代理模式对比,两者的主要区别在于代理模式应用的情况是不 改变接口命名的,而且是对已有接口功能的一种控制;而适配器模式则强调接口转换。

 

 

代理模式:
继承与真实对象一样的接口,实现对真实对象的代理。适合做切面。符合“对扩展开放、对修改关闭”原则。

  • 大小: 53.6 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics