设计模式-1

六大原则:

  • SRP(Single Responsibility Principle)——单一职责。只有一个原因引起变化
  • LSP(Substitution Principle)——里氏替换。所有引用基类的地方必须能透明地使用子类对象
    • 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法
    • 子类中可以增加自己特有的方法
    • 子类重载父类方法时,入参要比父类入参更宽
    • 子类实现父类方法时,返回值要比父类更严格
  • DIP(Dependency Inversion Principle)——依赖倒置。依赖抽象而不是细节,面向接口编程,模块之间解耦
  • ISP(Interface Segregation Principle)——接口隔离。客户端不应该依赖它不需要的接口
  • LOD(Law Of Demeter)——迪米特法则。对象之间耦合少。但是这种解耦是有限度的,否则会产生大量的跳转类。若一个类通过跳转两次以上去访问另一个类,则就要重构了。注意,需要适度考虑这个原则。
  • OCP(Open Closed Principle)——开闭原则。对扩展开放,对修改关闭,其实是一个核心思想,前5个原则遵守的好,开闭原则自然就遵守的好了。

按照使用场景,设计模式分为三大类:

  • 创建型(Creation Patterns)
    • 工厂模式
    • 原型模式
    • 构建者模式
    • 单例模式
  • 结构型(Structural Patterns)
    • 适配器模式
    • 桥接模式
    • 过滤器模式
    • 组合模式
    • 装饰者模式
    • 门面模式
    • 享元模式
    • 代理模式
  • 行为型(Behavioral Patterns)
    • 责任链模式
    • 命令模式
    • 解释器模式
    • 迭代器模式
    • 中介者模式
    • 备忘录模式
    • 观察者模式
    • 状态模式
    • 空对象模式
    • 策略模式
    • 模板模式
    • 访问者模式

UML类图常用关系:

  • 泛化(Generalization)
    • 继承关系,表示一般与特殊
    • 带三角箭头的实线,箭头指向父类
  • 实现(Realization)
    • 类与接口的关系,表示类是接口所有特征和行为的实现
    • 带三角箭头的虚线,箭头指向接口
  • 关联(Association)
    • 拥有关系,表示一个类知道另一个类的属性和方法
    • 带普通箭头的实线,箭头指向被拥有者
  • 聚合(Aggregation)
    • 整体与部分的关系,且部分可以离开整体单独存在
    • 带空心菱形的实线,菱形指向整体
  • 组合(Composition)
    • 整体与部分的关系,但部分不能离开整体单独存在
    • 带实心菱形的实线,菱形指向整体
  • 依赖(Dependency)
    • 使用的关系,表示一个类需要另一个类的协助
    • 带箭头的虚线,箭头指向被使用者

"uml"