更多细节见原文:设计模式

UML类图

  1. 依赖关系 Dependency:耦合度最弱。见于方法里的局部变量、方法的入参、对静态方法的调用。
  2. 关联关系 Association:对象之间的引用关系,表示一类对象与另一类对象之间的联系,比如老师与学生。
  3. 聚合关系 Aggregation:关联关系的一种,强关联。部分和整体可以独立存在。
  4. 组合关系 Composition:关联关系的一种,是一种更强烈的聚合关系。部分依赖于整体存在。
  5. 泛化关系 Generalization:父类与子类的关系。(父类是子类的泛化。。)

  6. 实现关系 Realization:接口与实现类之间的关系。

7条开发原则

  1. 开闭原则(Open Closed Principle,OCP)

    软件实体应当对扩展开放,对修改关闭(Software entities should be open for extension,but closed for modification)

  2. 里氏替换原则(Liskov Substitution Principle,LSP)

    继承必须确保超类所拥有的性质在子类中仍然成立(Inheritance should ensure that any property proved about supertype objects also holds for subtype objects)

    也就是,子类可以扩展父类的功能,但不能改变父类原有的功能。

    如果违背,就需要重新设计类之间的关系,比如定义更一般的父类。

  3. 依赖倒置原则(Dependence Inversion Principle,DIP)

    高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象(High level modules shouldnot depend upon low level modules.Both should depend upon abstractions.Abstractions should not depend upon details. Details should depend upon abstractions)

    核心思想是,面向接口编程,不要面向实现。

    主要作用是降低类之间的耦合性。

  4. 单一职责原则(Single Responsibility Principle)

  5. 接口隔离原则:拆分成更小、更具体的接口

  6. 迪米特法则:不和陌生人说话

  7. 合成复用原则:多用组合,少用继承

创建型设计模式

  1. 单例模式

  2. 原型模式

    原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。

    例如Java对象的clone()

  3. 工厂方法模式

  4. 抽象工厂模式

  5. 建造者模式