创建型模式
简单工厂模式:根据传入参数,返回不同对象,比如一个鼠标工厂,传入1返回神州鼠标,传入2返回戴尔鼠标
工厂模式:鼠标工厂是个父类,有生产鼠标这个接口。 戴尔鼠标工厂,惠普鼠标工厂继承它,可以分别生产戴尔鼠标,惠普鼠标。
抽象工厂模式:抽象工厂模式也就是不仅生产鼠标,同时生产键盘。 戴尔工厂,惠普工厂继承它,可以分别生产戴尔鼠标+戴尔键盘,和惠普鼠标+惠普键盘。
区别:简单工厂产出是一个产品(实例),抽象工厂产出是一个抽象(接口)。区别在于,若添加一个新的产品,前者是修改工厂,后者是创建新工厂(符合“闭合原则”)。
建设者模式:与工厂模式相比,建造者模式一般用来创建更为复杂的对象,而建造者模式中,建造者类一般只提供产品类中各个组件的建造,而将具体建造过程交付给导演类。由导演类负责将各个组件按照特定的规则组建为产品,然后将组建好的产品交付给客户端。
单例模式:主要是为了避免因为创建了多个实例造成资源的浪费,且多个实例由于多次调用容易导致结果出现错误,而使用单例模式能够保证整个应用中有且只有一个实例。
饿汉模式和懒汉模式(双重校验)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
private SingletonLanHan() {} private static SingletonLanHan singletonLanHanFour; public static SingletonLanHan getSingletonLanHanFour() { if (singletonLanHanFour == null) { synchronized (SingletonLanHan.class) { if (singletonLanHanFour == null) { singletonLanHanFour = new SingletonLanHan(); } } } return singletonLanHanFour; }
结构型模式
适配器模式:将一个类的接口转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以相互合作。这个定义还好,说适配器的功能就是把一个接口转成另一个接口。
代理模式( Proxy ):封装目标对象并限制外界对被代理对象的访问
行为型模式:
模板方法模式:定义:定义了一个算法的骨架,而将一些步骤延迟到子类中,模版方法使得子类可以在不改变算法结构的情况下,重新定义算法的步骤。
观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
策略模式( Strategy ):定义个策略接口,不同的实现类提供不同的具体策略算法, 同时它们之间可以互相替换.
装饰者模式( Decorator ):动态的给一个对象添加一些额外的功能
责任链模式(Chain of Responsibility Pattern):拦截的类都实现统一接口,每个接收者都包含对下一个接收者的引用。将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。
spring的设计模式:
1.简单工厂
2.工厂方法(Factory Method)
3.单例(Singleton)
4.适配器(Adapter)
6.代理(Proxy)
.模板方法(Template Method)