六大原则:
- 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)
- 使用的关系,表示一个类需要另一个类的协助
- 带箭头的虚线,箭头指向被使用者