0%

OO Design Pattern

OO Design Pattern

Old Learning Notes
Written in Chinese

大话设计模式

UML

  • 继承关系:空心箭头+实线
  • 接口实现:空心箭头+虚线
  • 关联关系:是新箭头+实线 (当一个需要了解另一个类)
  • 聚合关系:空心菱形+实线箭头(Aggregation:弱拥有关系)
  • 组合关系:是心灵性+实线箭头相同的生命周期强拥有关

简单工厂模式:

  • 工厂类根据用户选项创建(返回)不同的对象(多态)
  • 但这里工厂只是返回对象,选择过程其实是在客户端完成的

Strategy model

封装变化点是重要的思维方式

  • 将工厂转变为 context 对象,选择是在 context 完成的,the difference is that context class contains all the optional algorithms class.
    • The strategy model is a method to define all the algorithms doing the same job in different ways.

      单一职责原则

  • Regarding to a class, there should be only one reason for its changing.

    Open-Close principle

  • Open for extension
  • Close for modification

里氏代换原则

  • 子类必须能够替换掉他们的父类

倒转原则

  • 抽象不应该依赖细节,细节应该依赖抽象
  • 针对抽象编程而不是针对细节编程

    装饰模式

克隆

  • 真是个好东西啊,可以完全复制对象(不是类),将其的字段都复制过来,对于大部分内容都相同的类就不用实例化那么多遍了。构造函数分配空间,初始化值,加上后续修改过的字段,都不用重新做一遍。
  • 浅表复制不复制引用的对象,只复制引用。
  • 深复制:重写clone方法,使其实例化一个新的对象

    模版

    定义一个操作中的算法和框架,将一些不周延迟到子类中

迪米特法则LoD

如果两个类不必直接通信,那么两个类就不应该发生直接相互作用,可以通过第三方调用
修电脑找IT部门而不是找具体那个工程师

外观模式

builder model