模式设计的基本概念

设计习语,设计模式,架构模式

模式从目的上分类:

  1. 创建型模式 : 工厂模式 、抽象工厂模式 、单例模式 、建造者模式 、原型模式
  2. 结构型模式: 适配器模式 、桥接模式 、过滤器模式 、组合模式 、装饰器模式 、外观模式 、享元模式 、代理模式
  3. 行为型模式: 责任链模式 、命令模式 、解释器模式 、迭代器模式 、中介者模式 、备忘录模 、观察者模式 、状态模式 、空对象模式 、策略模式 、模板模式 、访问者模式

模式从范围上分类:

  1. 类模式,处理类与子类的静态关系
  2. 对象模式,处理对象间的动态关系

模式从封装变化角度分类:

  1. 组件协作:模板方法、策略模式、观察者(事件)模式
  2. 单一职责:装饰模式、桥模式
  3. 对象创建:工厂方法、抽象工厂、原型模式、构建器
  4. 对象性能:单例模式、轻量级模式、享元模式
  5. 接口隔离:门面模式、代理模式、中介者、适配器
  6. 状态变化:备忘录模式、状态模式
  7. 数据结构:组合模式、迭代器、职责链
  8. 行为变化:命令模式、访问器
  9. 领域问题:解析器

重构关键技法:

  1. 静态 》》 动态
  2. 早绑定  》》 晚绑定
  3. 继承 》》 组合
  4. 编译时依赖 》》 运行时依赖
  5. 紧耦合 》》 松耦合

 

设计原则:

  1. 依赖倒置原则(DIP)
    1. 高层模块不应依赖低层模块(即低层程序不需要在高层秩序之前被编译出来,否则就是产生了高层对低层的依赖),二者共同依赖于抽象
    2. 抽象不应依赖于实现细节(即不要依赖那些非常容易产生变化的代码,要将容易变的代码抽象出不容易变的那部分来,而细节就是容易产生变化的地方;实际上不论抽象还是不抽象都不要依赖那些容易变的代码),实现细节应依赖于抽象
  2. 开放封闭原则(OCP)
    1. 对扩展开放,对更改封闭
    2. 类模块应该是可扩展的,但是不可修改
  3. 单一职责原则(SRP)
    1. 一个类应该只有一个引起它变化的原因
    2. 变化的方向隐含着类的责任
  4. Liskov替换原则(LSP)
    1. 子类必须能够替换他们的基类
    2. 继承表达类型抽象
  5. 接口隔离原则(ISP)
    1. 不应该强迫客户程序依赖他们不用的方法
    2. 接口应该小而完备
  6. 优先使用对象组合,而不是类继承
    1. 类继承通常为白箱复用,对象组合通常为黑箱复用
    2. 继承在某种程度上破坏了封装性,子类父类耦合度高
    3. 而对象组合只要求被组合的对象具有良好定义的接口,耦合度低
  7. 封装变化点
    1. 使用封装来创建对象之间的分界层,让设计者可以只在分界的一边进行修改,而不会对另一边产生不良的影响
  8. 针对接口编程,而不是针对实现编程
    1. 不将变量类型生命为某个特定的具体类,而是生命为某个接口
    2. 客户程序无需获知对象的具体类型,只需要知道对象所拥有的接口
    3. 减少系统中各部分的依赖关系,从而实现高内聚低耦合的类型设计方案

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值