设计模式

来源:互联网 发布:网络红人菁菁淘宝店 编辑:程序博客网 时间:2024/06/09 20:19
  • 总结笔记,内容简单,不定期更新

开放封闭原则(OCP, Open Closed Principle)

  1. 开发封闭原则是所有面向对象原则的核心。
  2. 软件实体应该是可扩展的,不可修改的。
  3. 对扩展是开发的,对修改是封闭的。
  4. 扩展开发指,有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。
  5. 对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不需要对类进行修改。
  6. 实现开放封闭原则的核心思想就是抽象编程。
  7. 让类依赖于固定的抽象,修改就是封闭的。
  8. 通过面向对象的继承和多态机制,对抽象体继承,覆写其方法来改变固有的行为,实现新的扩展方法,对扩展就是开放的。

单例模式

  1. 最简单的一种设计模式
  2. 私有化构造函数
  3. 指向本身实例的私有静态指针
  4. 以本身实例指针为返回值的,静态,共有方法
  5. 确保程序运行时,一个类只有一个实例。
  6. 自行实例化,并向真个系统提供这个实例。

迪米特法则

  1. LoD (Law of Demeter)
  2. LKP (Least Konwledge Principle)
  3. 一个对象应当对其他对象尽可能少的了解,只与直接朋友说话,不和陌生人说话
  4. 尽量降低类与类之间的耦合
  5. 朋友:两个对象间有耦合关系
  6. 直接朋友:出现在成员变量、方法参数、方法返回值中的其他类,称为该类的直接朋友
  7. 出现在局部变量中的类,不是该类的直接朋友
  8. 陌生类,最好不要作为局部变量的形式

简单工厂

  1. 又称静态工厂方法,由一个工厂对象决定创建出哪一种产品类的实例,是工厂模式家族中最简单实用的模式。
  2. 满足DIP和LOD。
  3. 不满足OCP(需要修改工厂类)
  4. DIP 依赖倒装原则:针对接口编程,不针对实现编程

工厂模式

  1. 由于简单工厂模式不满足OCP,提出了工厂模式。
  2. 简单工厂模式只有一个工厂类。
  3. 工厂模式有一组实现了相同接口的工厂类。
  4. 工厂模式针对每一种产品,提供了一个工厂类。
  5. 扩展时不需要修改原有类(增加新类即可)

模块化设计

  • 设计一个模块时要考虑

    1. 这个模块应该提供哪些功能
    2. 这个模块应该怎样与其他模块交流信息
  • 信息隐蔽

    1. 避免某个模块的行为干扰同一系统中其他模块
    2. 让模块仅公开让外界知道的信息,而隐藏其他一切功能
    3. 实现:通过接口设计实现,一个模块仅提供有限个接口。执行模块的功能或模块交流信息,必须且只须通过公有接口来实现。
  • 内聚与耦合

    1. 内聚:模块内部各成分间相关联程度的度量
    2. 耦合:模块间依赖程度的度量
    3. 模块设计追求高内聚低耦合