设计模式

来源:互联网 发布:mac ps合并图层快捷键 编辑:程序博客网 时间:2024/05/27 10:43

基本原则:

     多用组合,少用继承;

     针对接口编程,不针对实现编程; 

     为交互对象之间的松耦合而努力;

     对扩展开放,对修改关闭;

     依赖抽象,不依赖具体类;

     方法调用不可以使用返回的对象;

     一个类应该只有一个引起变化的原因;




1、创建型模式:

                 工厂模式;由子类决定实例化哪个具体类

                 抽象工厂模式;

                 builder(生成器)模式;  构建与表示分离了,构造过程封装在builder类了。

                 单体模式;ACE_Singleton


2、结构型模式:

                适配器模式;将一个接口转成另一个接口。

template <class MALLOC>

class ACE_Allocator_Adapter : public ACE_Allocator

              具体使用方法: typedef ACE_Allocator_Adapter<ACE_Malloc <ACE_MMAP_MEMORY_POOL, ACE_SYNCH_MUTEX>> PERSISTENT_ALLOCATOR;

              将ACE_Malloc类转换为ACE_Allocator。


ACE_Lock --- 抽象类型

ACE_Lock_Adapter -- 使用适配器模式。采用模板实现。

template <class ACE_LOCKING_MECHANISM> --- 具体类型

class ACE_Lock_Adapter : public ACE_Lock


                            对象适配器,采用组合方式

                            类适配器,采用继承方式

                修饰者模式;不改变接口,但加入责任。

                           采用递归方式

                外观模式;让接口简单。可以让客户从组建的子系统中解耦。ACE_SOCK_CONNECTOR等

                组合模式;

                观察者模式:

                桥接模式:桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦。桥梁模式中的所谓脱耦,就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以相对独立地变化。这就是桥梁模式的用意。用例:ACE_ACTOR


3、行为模式:

               策略模式;封装可以互换的行为,然后使用委托来决定采用哪一个行为:继承自ACE_Alloctor的三种Alloctor:如ACE_Static_Allocator等

               观察者模式;

               模板模式:子类决定如何实现算法中的某些步骤。

               迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。(外部迭代器,内部迭代器)

               状态模式:运行一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。

               代理模式:分布计算方式RMI和Corba等都是Proxy模式的应用