https://www.runoob.com/design-pattern/design-pattern-tutorial.html
设计模式:
1.简单工厂模式:(静态方法) 2048小游戏,计算器
2.装饰者模式:Thread thread=new Thread(()->System.out.println());
3.代理模式: 把real类当作proxy类的属性,进一步封装,两个类都初始化,实际调用real类的方法。
4.工厂方法模式:(非静态方法) 2048小游戏,计算器
5.单例模式:
静态初始化: A类中new一个A对象修饰为静态(然后一直使用这个静态对象),空构造方法标记为私有,让他无法初始化。
①第一次被引用时,实例化,懒汉式单例
②直接用静态标记,加载的时候就实例化
线程安全问题:
①通过静态标记解决
②通过加锁解决
6.建造者模式: 从一个菜单开始进行展开,和展开后的向上抽象。
菜单->何种菜单,假设A菜单->菜单中有 牛肉和大白菜->肉类 青菜类->继续抽象到 抽象类或接口层。。
7.观察者模式:实体类配置关系的过程(多个观察者对应一个主体)
Subject subject = new Subject();
new HexaObserver(subject);
new OctalObserver(subject);
new BinaryObserver(subject);
//在初始化Observer的同时,把Observer attach到subject中,双向注册
public HexaObserver(Subject subject){
this.subject = subject;
this.subject.attach(this);
}
在subject调用了changestatus时,遍历所有Observers,调用其update方法