设计模式
1.七大原则
2.创造型,行为型,结构性
1.单例模式 (饿汉安全,懒汉)
2.简单工厂模式 根据传入工厂类的不同参数生产不同商品 (有新产品时违背了关闭开放原则)
3.工厂模式 通过不同的工厂(继承同一工厂父类)来生产不同商品
4.抽象工厂模式 与工厂模式相比,一个工厂能生产多种商品(感觉又回到了简单工厂。。)通过实例化具体的工厂类,并调用其创建不同目标产品的方法创建不同具体产品类的实例(与简单工厂的区别在于简单工厂用不同参数,抽象工厂用不同方法)
5.建造者模式 1.director和客户Client进行需求沟通 2.沟通后将客户的去求划分为不同的建造请求 3.将不同的请求委派给具体的建造者,具体的建造者负责构建 4.得到最终的产品
优点:解耦、精确控制、易于扩展
缺点:产品差异过大不适宜使用 内部复杂
6.适配器模式
类的适配器模式(继承关系),对象的适配器模式(委派关系)
定义一个包装类,用于包装不兼容接口的对象
主要是为了解决由于接口不兼容而不能一起工作的问题
优点:更好的服用、更好的扩展、解耦等
缺点: 太多适配器造成系统过于凌乱
7.外观模式
定义一个统一的外观接口来调用子接口
适配器模式是将一个对象包装起来以改变其接口,而外观是将一群对象 ”包装“起来以简化其接口。它们的意图是不一样的,适配器是将接口转换为不同接口,而外观模式是提供一个统一的接口来简化接口。
8.代理模式
静态代理模式 ,只服务一种代理对象。通过代理模式调用对象,编译时就写好
动态代理模式 在运行时通过JDK代理
9.模板模式
提高代码复用性,实现反向控制(模板大体上相同。具体子类实现上稍有不同)
10.策略模式
简单来说,就是“准备一组算法,并将每一个算法封装起来,使得它们可以互换。但策略模式并不决定在何时使用何种算法,算法的选择由客户端来决定
11.观察者模式(又称发布订阅模式)
常变对象 与不常变对象之间存在依赖关系的前提下,不常变对象 需随 常变对象经常改变逻辑的问题
JAVA API有内置的观察者模式