设计模式总结: 5种创建型,7种结构型,11种行为型
1.1
工厂方法模式
工厂方法模式(根据参数不同,工厂方法返回不同的产品对象),
多个工厂方法模式(创建不同产品不需要参数),
静态工厂方法模式(将工厂方法改为静态的,不需要实例化类)
1.2
抽象工厂:适合产品多变的情况,要生产新的产品就必须在工厂类里面加生产的方法,违背开闭原则。抽象工厂,
增加一个
工厂类接口,一个接口方法;
各种产品实现这个工厂接口,生产自己对应的产品。
1.3
单例模式
:Singleton
(懒汉式&饿汉式)
特殊的工厂方法模式,一个类只有一个实例:
1.
拥有一个私有的静态实例;
2. 拥有
私有的默认构造函数;
3.
静态工厂方法,如果是懒汉式的必须同步的,防止多线程同时操作;
4.重写clone()函数,
返回当前实例对象,默认clone()创建新实例;
public class SingletonFactory{
//1.私有的防止外部变量引用;
private static SingletonFactory _instance=null;
//2.私有的默认构造函数,防止使用构造函数实例化;
private SingletonFactory(){
}
//3.单例静态工厂方法,同步方式多线程同时执行;
synchronized public
static SingletonFactory getInstance(){
if(_instance==null){
_instance=new SingletonFactory();
}
retrun _instance;
}
//4.重写克隆函数
public SingletonFactory
clone(){
return getInstance();
}
}
1.4
建造者模式 StringBuilder
public class Client {
public static void main(String[]args){
Builder
builder = new
ConcreteBuilder();//接口buider,实现接口的具体建造者ConcreteBuilder,导演者Director,
Director director = new
Director(builder);
director.construct();
Product product =
builder.retrieveResult();
System.out.println(product.getPart1());
System.out.println(product.getPart2());
}
}
1.5
原型模式:
复制一个已经存在的实例来返回一个新的实例,而不是新建
------------------------------------------------------------------------------------------------------------
2.1
适配器模式:
类的适配器:对类进行适配。A继承B,实现接口C。
对象的适配器:对对象进行包装;A实现接口C,不继承B,包含一个B的对象;
接口的适配器:对接口抽象化。A实现所有接口,为每个接口提供一个默认实现;
缺省适配器模式:
(A extends AbstractB implements interfaceC,那么A即可以选择实现(@Override)接口interfaceC中的方法,也可以选择不实现;A即可以选择实现(@Override)抽象类AbstractB中的方法,也可以选择不实现)
2.2
装饰器模式:(io流)
一个接口A,一个接口A的实现类B,一个装饰器C。C实现了A,并且有一个私有的类型为A的成员,构造函数初始化它。
适配器模式是将一个类A转换为另一个类B;
装饰器模式是为一个类A增强新的功能,从而变成B;
代理模式是为一个类A转换为操作类B;
2.3
代理模式
2.4
外观模式 jdbc
代理模式(一对一)发展而来的外观模式(一对多)
客户端访问子系统中的各个类,高度耦合。中间加一个统一接口,降低耦合度,客户端访问该类,该类调用子系统中的各个类。
客户端通过访问
桥
访问目标实现类,桥抽象化类包含目标接口类对象,可以赋值 目标接口类的实现类的实例化给他,通过桥调用不同的目标实现类对象。
2.6 组合
两个类之间:
2.7 享元
-----------------------------------------
父类与子类之间:
1.策略模式:【实现C中函数指针的功能,不同的比较策略】 (comparable & Comparator);
2.模板方法模式
3.观察者模式
4.迭代子模式
(容器与容器遍历)
5.责任链模式
(责任链模式)
(
串的替换---可以使用链式操作)