jetty2k-kyj

无名
posts - 3, comments - 20, trackbacks - 0, articles - 0

GOF模式之我见 之一

Posted on 2010-03-09 16:31 郑晓源 阅读(1238) 评论(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的接口功能完整化,且实现独立


未完,待续……

Feedback

# re: GOF模式之我见 之一  回复  更多评论   

2010-03-10 12:52 by 刘畅
赞,看邮件地址LZ好像是武汉大学的?

# re: GOF模式之我见 之一  回复  更多评论   

2010-03-19 02:05 by gbb21
靠,下次记得先感谢国家!

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理