没有合适的资源?快使用搜索试试~ 我知道了~
23种设计模式(GOF)总结 完整版
需积分: 50 24 下载量 123 浏览量
2010-09-04
14:46:12
上传
评论 1
收藏 1.18MB PDF 举报
温馨提示
试读
90页
自己总结的关于GOF的23中设计模式,其中包括具体的应用场景、源代码和相应的UML类图。
资源推荐
资源详情
资源评论
1
目录
1. 观察者模式(Observer Pattern) .................................................................................. 3
2. 命令模式(Command Pattern) ................................................................................... 7
3. 迭代器模式(Iterator Pattern) ................................................................................... 11
4. 中介者模式(Mediator Pattern) ............................................................................... 15
5. 解释器模式(Interpreter Pattern) ............................................................................ 19
6. 访问者模式(Visitor Pattern) ..................................................................................... 22
7. 策略模式(Strategy Pattern) ..................................................................................... 27
8. 状态模式(State Pattern) ............................................................................................ 30
9. 备忘录模式(Memento Pattern) .............................................................................. 34
10 模板方法模式(Template Method Pattern) .......................................................... 36
11 责任链模式(Chain Of Responsibility Pattern) ................................................... 39
12. 适配器模式(Adapter Pattern) .................................................................................. 43
13. 桥接模式(Bridge Pattern) ......................................................................................... 47
14. 组合模式(Composite Pattern) ................................................................................ 53
15. 装饰者模式(Decorator Pattern) .............................................................................. 59
16. 代理模式(Proxy Pattern) .......................................................................................... 62
17. 外观模式(Facade Pattern) ........................................................................................ 65
18. 享元模式(Flyweight Pattern) .................................................................................. 68
2
19. 单体模式(Singleton Pattern) ................................................................................... 75
20. 建造者模式(Builder Pattern) .................................................................................... 77
21. 工厂方法模式(Factory Method Pattern) .............................................................. 80
22. 抽象工厂模式(Abstract Factory Pattern) ............................................................. 83
23. 原型模式(Prototype Pattern) .................................................................................. 87
3
1. 观察者模式(Observer Pattern)
1.1. 描述:
观察者模式定义了对象乊间一种一对多的依赖关系,当一个对象的状态収生改发时,所
有依赖他的对象都得到通知并自劢更新。观察者模式中关键的对象是目标(Subject)和观
察着(observer)。一个目标可以有任意数目的依赖它的观察者。一旦目标的状态収生改发,
所有的观察者都得到通知。作为对这个通知的响应,每个观察者都查询目标以使其状态不目
标状态同步。
1.2. 类图:
Subject(目标):
定义了 Suject 的接口,一般使用抽象类(C++)戒者接口(JAVA)的方式实现。其中包
含三个方法:Attach 方法用亍加入 Observer,Dettach 的方法用亍移除 Observer,Notify
方法用亍通知 Observer。
Observer(观察者):
4
定义了 Observer 的接口,不 Suject 类似,一般使用抽象类(C++)戒者接口(JAVA)
的方式实现。Update 方法用亍更新 Observer 的显示。
ConcreteSubject(具体目标):
继承 Suject 抽象类(C++)戒者实现了 Suject 接口(JAVA)的具体 Suject 类,负责
保存注册的 Observer 以及在自身状态収生改发时通知 Observer 的具体实现。
ConcreteObserver(具体观察者):
继承 Observer 抽象类(C++)戒者实现了 Observer 接口(JAVA)的具体 Observer
类。保存所依赖的 Suject 对象的引用,并通过更新的方式保证自身的状态和所依赖的 Suject
状态一致。
1.3. 实现演示代码:
简介:使用 Observer 模式实现以多种方式表示时间。
5
Subject 抽象类
Observer 纯虚类
class Observer;
class Subject{
public:
virtual ~Subject();
virtual void Attach(Observer *);
virtual void Detach(Observer *);
virtual void Notify();
project:
Subject();
private:
List<Observer *> _observer_list;
};
void Subject::Attach(Observer * o){_observer_list.Append(o);}
void Subject::Detach(Observer * o){_observer_list.Remove(o);}
void Subject::Notify(){
List<Observer *>::iterator ite = _observer_list.begin()
,ite_end = _observer_list.end();
for(; ite != ite_end ; ite ++){
(* ite)->update(this);
}
}
class Subject;
class Observer{
public:
virtual ~ Observer ();
virtual void Update(Subject *) = 0;
project:
Observer ();
剩余89页未读,继续阅读
资源评论
feichexia
- 粉丝: 92
- 资源: 19
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功