1.什么是设计模式(Design Pattern)
设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
通俗来说,设计模式就是设计中的套路
2.为什么使用设计模式
- 根本原因是为了代码复用,增加可维护性,让代码更容易被他人理解、保证代码可靠性。
3.设计模式的三种类型(共23种设计模式)
- 创建型
- 结构型
- 行为型
4.设计模式的三要素
- 模式名称
- 问题
- 解决方案:解决问题的具体方法(使用类图,清晰明了)
5.类与类之间的关系
- 继承:java中使用extends关键字,在UML类图设计中,继承用一条带空心三角箭头的实线表示,从子类指向父类,或者子接口指向父接口。
- 实现:java中使用implements关键字,在UML类图设计中,实现用一条带空心三角箭头的虚线表示,从类指向实现的接口。
- 依赖:一个类使用到了另一个类,这种关系具有偶然性,临时性,关系较弱。在UML类图设计中,依赖关系用由类A指向类B的带箭头虚线表示。
- 关联:两个类之间的强依赖关系,一般是长期性的存在。表现在代码层面,为被关联类B以类的属性形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。在UML类图设计中,关联关系用由关联类A指向被关联类B的带箭头实线表示,在关联的两端可以标注关联双方的角色和多重性标记。
- 聚合: 聚合是关联关系的一种特例,它体现的是整体与部分的关系,即has-a的关系。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,聚合关系以空心菱形加实线箭头表示。
- 组合:组合关系也是关联的一种特例,它体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,比如人和人的大脑。在UML类图设计中,组合关系以实心菱形加实线箭头表示。
6.设计模式的总体原则
- 高内聚,低耦合
- 低耦合:组件之间的依赖关系较弱
- 高内聚:组件内部依赖关系较强
7.设计原则
- 单一职责原则(SRP,Single Responsibility Principle):一个类最好只做一件事
-
开放封闭原则( OCP , Open Closed Principle ):模块应该对扩展开放,对修改关闭,即在不修改原代码的基础上对模块进行扩展
-
依赖倒转原则( DIP , Dependence Inversion Principle ):依赖抽象编程(面向接口编程)
-
接口隔离原则( ISP , Interface Segregation Principle ):每个接口中的方法尽量的少,不同的功能使用不同的小接口,避免一个接口实现较多没有依赖关系的功能,造成接口污染
里氏代换原则(LSP,LiskovSubstitution Principle):子类必须能够替换父类
- 工厂模式(Factory)
- 原型模式(Prototype)
- 生成器模式(Builder)
- 单态模式(Singleton)
9.结构型模式
- 外观模式(Facade)
- 代理模式(Proxy)
- 适配器模式(Adapter)
- 组合模式(Composite)
- 装饰模式(Decorator)
- 桥接模式(Bridge)
- 享元模式(Flyweight)
10.行为模式
- 模板模式(Template)
- 备忘机制模式(Memento)
- 观察者模式(Observer)
- 职责链模式(ChainofResponsibility)
- 命令模式(Command)
- 状态模式(State)
- 策略模式(Strategy)
- 中介者模式(Mediator)
- 解释器模式(Interpreter)
- 参观者模式(Visitor)