设计模式
策略模式
只使用继承耦合性太强,只使用接口在实现类有重复代码。使用策略模式,可以定义多个算法族,一个算法族有一个接口,多个实现类,复用这些实现类。
状态模式
一个系统有一个初始状态,并在不同的时机改变状态。定义一个状态类型的接口,定义一些实现类,实现接口方法。
单例模式
饿汉模式,私有化构造方法,直接给成员变量赋值,成员变量设置为静态的。
懒汉模式,私有化构造方法,提供一个方法生成单例对象,判断如果等于null就创建一个对象。
懒汉模式多线程情况偶尔会出现问题,解决办法。1、饿汉模式;2、同步方法;3、同步代码块,两层null校验,成员变量设置为volatile
适配器模式
A类和B类方法逻辑类似,但接口不同,方法名不同,A和B无法对接。新建C类,实现A的接口,组合B,方法体里调用B的方法。
外观模式
一个操作需要不同组件按顺序执行执行,过程复杂。这时,新建一个类,在这个类里组合不同组件,并新建一个方法,封装方法调用,对外提供单一接口。
模板方法模式
在抽象类里定义一个模板方法,模板方法体调用其它方法,有的方法自己实现,实现标准化过程;有的方法是抽象方法,等继承者实现,实现产品个性化。
命令模式
遥控器里有一个小程序,有一个类包含一个接口类型的数组,并且为每个数组元素赋值为一个个不同的实现类,不同的实现类封装各自的方法调用。
装饰者模式
装饰者实现被装饰都实现的接口,可以拿来当做被装饰者使用;装饰者内部组合被装饰者,在调用被装饰者的方法前后,可以执行一些其他的操作。
工厂模式
简单工厂,封装对象创建。其思想和springIOC相同。
抽象工厂,一个工厂接口,多个工厂实现类生产不同的产品。
工厂方法,类似模板方法模式。模板方法强调模板方法,强调标准。工厂方法,强调工厂方法,强调个性化。
迭代器模式
对容器集合采用最合适的方式迭代。
观察者模式
发布订阅模式,订阅者组合发布者,调用发布者的方法注册或注销。发布者有一个订阅者容器,在适当时机调用订阅者的方法以通知它。
代理模式
组合实现;继承实现。
组合模式
忽略类型差别,组织元素为多层的树状结构,一层中的一个元素既可能是叶子元素,也可以是组合元素,叶子元素和组合元素方法不同。虽然错误可能提高,但有时会简化问题。
设计原则:松耦合、依赖倒置原则、开放关闭原则、单一责任