1.工厂模式
1.创建一个接口 Fruit
2.创建一个类实现以上接口并重写其方法
3.创建一个工厂类,这里结合了反射机制
调用
2.原型模式
创建一个类,实现Cloneable接口
注意:
原型模式只对八种基本数据类型以及他们的封装类进行深拷贝。类似数组,集合,容器对象,引用对象我们可以通过以下形式对其进行深拷贝
继承ProtoType,做模板类
然后我们用一个循环创建concreteProtoType对象
总结:使用原型模式创建对象比直接new一个对象在性能上要好的多,因为Object类的clone方法是一个本地方法,它直接操作内存中的二进制流,特别是复制大对象时,性能的差别非常明显。
3.装饰者模式
装饰者与被装饰者拥有共同的超类,继承的目的是继承类型,而不是行为。
定义被装饰者(星巴克基类):
初始化被装饰者,有一些自己的装饰,这里在不加任何装饰前,被装饰者只是一杯白开水
定义装饰者,装饰者是调料例如:奶粉,咖啡豆等
定义具体的装饰类,加了奶粉的水变成了奶茶,加了咖啡豆的水变成了咖啡,对水进行装饰
调用:创建一个已经初始化的基类,用装饰者来装饰它
4.中介者模式
通过设置A来影响B
创建一个抽象的中介者类
具体逻辑实现
创建A和B共同的抽象类,通过抽象方法,在子类继承时,重写该方法时影响同事类
调用:
1.每个对象都会在自己的状态发生改变时,告诉中介者
2.每个对象都会对中介者所发出的请求作出回应
3.通过将对象彼此解耦,增强对象的复用性
4.将控制逻辑集中,简化了系统维护
5.观察者模式
为所有具体的观察者定义一个接口
子类实现接口,在得到主题的通知时更新自己。
抽象被观察者角色,把所有对观察者对象的引用保存在一个集合中,每个被观察者角色都可以有任意数量的观察者。被观察者提供一个接口,可以增加和删除,通知观察者角色状态改变。
具体的被观察者去继承Subject,做具体实现
调用: