设计模式

目录

“对象创建”模式

“对象性能”模式

“接口隔离”模式

“状态变化”模式

“行为变化”模式

“数据结构”模式

访问器模式

解析器模式

总结


“对象创建”模式

工厂方法是抽象工厂的特例
    ●抽象工厂是一堆关联工厂组合成一个工厂,实现多个关联对象高内聚创建,组合起来的一个工厂实现对象创建脱离具体依赖;
    ●工厂方法是一个工厂,实现一个对象创建脱离具体依赖;

原型模式
    ●适用于待创建对象比较复杂,原对象有状态需要保留时,原型模式优于抽象工厂;
    ●实现拷贝构造+克隆接口;

构建器模式 Builter
    ●复杂对象构建,对象有多个子部分构成
    ●各部分组合方法稳定;
    ●各子部分变化频繁;

“对象性能”模式

享元模式 FlyWeight
    ●通过共享减少内存消耗。

单例模式
    ●对象全局唯一;
    ●确保逻辑或效率良好。

“接口隔离”模式

门面模式Facade
    ●添加间接接口层;(稳定)
    ●简化子系统调用;(松耦合)

代理模式Proxy
    ●对象直接访问较麻烦;
    如:创建开销大、需安全控制、需进程外访问、分布式等
    ●接口代理实现控制;

适配器模式Adapter
    ●旧接口匹配新接口;
    ●类适配器;(多继承,不推荐)
    ●对象适配器;(推荐)
    ●旧对象做接口参数:
示例:
    内核deque
        ●std::stack
        ●std::queue

中介者模式Mediator
    ●适用多对象相互关联;
    ●封装变动的关联关系为中介者;
    ●编译时依赖转运行时依赖;

“状态变化”模式

状态模式State
    ●对象行为随状态变化而变化;
    ●替换if else或者枚举;
    ●状态封装为对象;(对比策略模式)

备忘录模式Memento
    ●状态保存与恢复;
    ●核心是信息隐藏;
    ●深拷贝、序列化…;


“行为变化”模式

命令模式Command
    ●行为请求与实现分离,Redo、Undo;
    ●行为抽象为对象;
    ●多命令封装为复合命令;
    ●对比:函数对象更灵活,性能更优。


“数据结构”模式

    解耦组件内部数据结构与客户程序

组合模式Compsite
    ●对象组合为树形结构表征“部分-整体”层次关系;
    ●单对象与组合对象使用方式一致;(1:n->1:1)

迭代器模式Iterator
    ●集合顺序访问;
    ●性能问题:泛型模板编译时多态 替换面向对象运行时多态。

职责链China of Responsibility
    ●多对象可处理同一任务;
    ●同一时刻一个任务仅可一个对象处理;


访问器模式Visitor

    ●类层次及数量稳定;
    ●类内接口变更及扩展变动;
    ●类预先定义带Visitor基类参数的扩展虚接口;
    ●双重解析实现。


解析器模式

        特定领域复杂变化中抽象出特定的语法规则;

总结

目标:管理变化,提高复用;
两种手段:分解、抽象;
八大原则:
    ●依赖倒置
    ●开放封闭
    ●单一职责
    ●里氏替换
    ●接口隔离
    ●组合优于继承
    ●封装变化点
    ●面向接口编程

重构技法
    ●静态—>动态
    ●早绑定—>晚绑定
    ●继承—>组合
    ●编译时依赖—>运行时依赖
    ●紧耦合—>松耦合
 

你可能感兴趣的:(设计模式,设计模式)