工厂模式
使用场景:对象的创建 和 对象的使用 分离
建造者模式
使用场景:产品的创建需要固定的步骤,适合产品族类的场景,比如产品a,产品b通产品系
单例模式
使用场景:独一份资源
使用静态内部类方式构建,线程安全
public class Singleton1 {
private Singleton1() {}
private static final Singleton1 single = new Singleton1();
//静态工厂方法
public static Singleton1 getInstance() {
return single;
}
}
原型模式
场景:克隆对象
适配器模式
使用场景:java的io流
装饰器模式
使用场景:需要扩展原来类的功能,但是不修改原类的方法
代理模式
代理模式和装饰器模式都是给对象添加功能,但是装饰器模式的主体是被装饰者,代理模式的主体是代理类,可以控制对被代理类的访问,隐藏被代理类的详细信息
动态代理
外观模式
使用场景:提供一个门面,里面的细节隐藏
享元模式
使用场景:多个客户共享一些对象
策略模式
使用场景:多选一匹配
模板方法设计模式
使用场景:使用继承,juc下的AQS就使用了模板
责任链模式
使用场景:审批,多模式登录
观察者模式 分为拉取和推送
使用场景:推送,广播,间谍模式
访问者模式
使用场景:医院拿处方单取药,抓药
将资源放到list里面,然后外面传进来访问者,执行访问者的动作
命令模式
使用场景:只发命令,不用管实现细节
状态模式
使用场景:酒店订房,房子有空闲,预定,入住状态
备忘录模式
使用场景:游戏打boss前存档,打boss失败调用存档
迭代器模式
使用场景:java集合遍历