设计模式概述
面向对象(Object Oriented Programming)
面向对象语言三大特性:继承、封装、多态
Java语言:抽象(Abstact)、接口(Interface)、static、final
面向对象设计原则
优先使用对象组合,而不是类继承。
UML类图
流程图
单一职责原则
开闭原则
里氏替换原则
定义:所有引用基类的地方必须能透明的使用其子类对象
依赖倒置原则
- 高层模块不应该依赖底层模块,两者都应该依赖其抽象
- 抽象吧应该依赖细节
- 细节不应该依赖抽象
接口隔离原则
定义:客户端不应该依赖它不需要的接口
迪米特原则
定义:一个对象对其他对象有最少的了解
创建模式、结构模式、行为模式
MVP、MVC、MVVM概述
Presenter主要的作用是沟通View和Model的桥梁,它从Moidel层检索数据后,返回给View层,使得View和Model之间没有耦合,也将业务逻辑从View角色上抽离出来
设计模式分类
23种设计模式分为三大类
创建型模式共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
模式 | 分类 |
---|---|
创建型 | 工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式 |
结构型 | 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式 |
行为型 | 策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 |
类与类,类与接口之间的关系
is-a 继承
has-a 聚合 一个类包含另一个类 对象类A包含对象类B
use-a 依赖 一个类拥有另一个类 一个类的方法操作另一个类的对象
一个类创建另一个类
继承关系关系用空心三角+实线表示
实现关系接口用空心三角+虚线表示
关联关系用实线箭头表示
是一种拥有关系,它使一个类知道另一个类的属性和方法。
Class Penguin extends Bird {
private Climate climate;
}
聚合关系用空心菱形+实线箭头表示
表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。是整体和部分的关系,且部分可以离开整体单独存在。
Class WideGooseAggregate {
private WideGoose[] arrayWideGoose;
}
组合关系用实心菱形+实线箭头表示
表示一种强的‘拥有关系’,体现了严格的部分和整体的关系,部分和整体的生命周期一样。是整体和部分的关系,但部分不能离开整体而单独存在。
Class Brid {
private Wing wing;
public Brid(){
wing = new Wing();
}
}
依赖关系用虚线箭头表示
是一种使用关系,及一个类的实现需要另一个的协助。
class Animal {
public Metabolism(Oxygen oxygen , Water water) {
}
}
创建型模式共五种
工厂方法
抽象工厂
单例模式
建造者模式
原型模式
结构型模式共七种
适配器模式
装饰器模式
代理模式
外观模式
桥接模式
组合模式
享元模式
行为型模式共十一种
策略模式
模板方法
观察者模式
迭代子模式
责任链模式
命令模式
备忘录模式
状态模式
访问者模式
中介者模式
解释器模式