Posted on 2010-03-09 16:31
郑晓源 阅读(1254)
评论(2) 编辑 收藏 引用
感谢GOF
感谢K_Eckel frwei@whu.edu.cn
感谢爱人
感谢家人
转载请注明来源
希望能和兄弟们交流 jetty jetty2k_kyj@163.com
**************************************************************
架构设计,目前理解来看,就是对概念的 分级,分离/组合,通信
分级: 比如 继承,比如 大模块下的小模块
分离: 比如 对象分类,组件分类
组合: 比如 类对象的组合
通信: 比如 通过接口,通过类WinMsg
1. 创建型模式
1.1 Factory Method(工厂方法)[一般对象创建]
1. 用类C1自身特色构造函数封装对象的创建
创建的调用在抽象工厂类的子类的虚函数F1中
创建后,可添加初始化代码于F1中,F1返回C1对象指针
C1对象指针可 工厂析构时自动[安全] 或 不用时手动[效率] 释放
2. 扩展(模板类法)
将抽象工厂类的子类做成模板类
传入Cn作为参数,就实现了编译时类变化支持
3. 扩展(配置文件法)
可增加Key,ClassName对应的Xml配置文件
再由 m##n 宏 将ClassName转成对应的标识符来调用
这样,先将可能用到的Class都定义好,调用流程写好
更改Xml配置文件,就实现了运行时类变化支持
1.2 Abstract Factory(抽象厂工)[相关联的一组对象创建]
1. 在Factory Method(工厂方法)的基础上
在抽象工厂类中为每一组具有相同创建过程的对象
建立一个虚函数,其他类同Factory Method(工厂方法)
2. 如果虚函数不多,就只用一个抽象工厂的子类,
用函数名字划分产品线(男鞋线/女鞋线)
3. 如果虚函数较多,可用多个抽象工厂的子类,
用类名(食品厂/鞋厂)划分产品线,
相关联的对象的创建就在一起了
1.3 Singleton(单件)[保证仅有一个实例]
1. 私有化 类构造函数
只能通过静态成员函数Instance来生成这个唯一对象
用静态私有成员变量保存这个唯一实例对象的指针
用静态公有函数GetInstance返回这个指针
注意在类析构时,SafeDel这个指针
2. 上面的具体工厂类,就应该是一个Singleton对象
1.4 Builder(生成器)[相同构造算法得到不同的复杂对象](STL)
1. 分离 构造算法(稳定) 与 构造参数(不稳定)
2. 需要 算法函数队列 迭代器 容器
3. 例如 STL中的算法 nth_element
1.5 Prototype(原型)[自我复制]
1. 代码
Prototype* ConcretePrototype::Clone() const
{
return new ConcretePrototype(*this); //拷贝构造函数
}
2. 注意 类成员为 指针或复杂对象 时,拷贝构造函数 的 深层拷贝
2. 结构型模式
2.1 Bridge(桥接)[分离接口与实现]
1. 接口类A 为 实现类B 的父类
2. A类中有类B对象的指针,可用函数赋值
3. 从而使类A的接口功能完整化,且实现独立
未完,待续……