1. 设计模式
(1)创建型模式(Creational Patterns):对象
工厂模式(Factory Pattern)
抽象工厂模式(Abstract Factory Pattern)
单例模式(Singleton Pattern)
建造者模式(Builder Pattern)
原型模式(Prototype Pattern)
(2)结构型模式(Structural Patterns):组成
适配器模式(Adapter Pattern)
桥接模式(Bridge Pattern)
过滤器模式(Filter、Criteria Pattern)
组合模式(Composite Pattern)
装饰器模式(Decorator Pattern)
外观模式(Facade Pattern)
享元模式(Flyweight Pattern)
代理模式(Proxy Pattern)
(3)行为型模式(Behavioral Patterns):功能
责任链模式(Chain of Responsibility Pattern)
命令模式(Command Pattern)
解释器模式(Interpreter Pattern)
迭代器模式(Iterator Pattern)
中介者模式(Mediator Pattern)
备忘录模式(Memento Pattern)
观察者模式(Observer Pattern)
状态模式(State Pattern)
空对象模式(Null Object Pattern)
策略模式(Strategy Pattern)
模板模式(Template Pattern)
访问者模式(Visitor Pattern)
2. 单例模式介绍
类的对象在内存中只有一个(要保证这个对象不能在外部创建,必须在类内部创建好,对外提供获取方式)
2.1 饿汉式 (提前做好,饿时直接吃)
- 类加载的时候就创建
- 线程安全
public class Sun {
//私有构造器(外部不能创建对象)
private Sun(){}
//自己造对象(静态方法只能访问静态成员变量,所以也要给s加static)
private static Sun s = new Sun();
//提供公有的访问方式(通过类名调用方法,要加static)
public static Sun getSun(){
return s;
}
}
public class Demo16 {
public static void main(String[] args) {
Sun s1 = Sun.getSun();
Sun s2 = Sun.getSun();
System.out.println(s1==s2); //true(s1和s2是同一个对象)
}
}
2.2 懒汉式 (饿之前没做,饿了要吃时才做)
- 在调用方法时才创建
- 线程不安全
public class Moon {
//私有构造器
private Moon(){}
//自己定义对象,在调用方法时创建
private static Moon m = null;
//提供公有的访问方式(操作共享的数据有多条,会出现线程安全问题,给方法加一个同步synchronized)
public synchronized static Moon getMoon(){
if(m==null){
m = new Moon();
}
return m;
}
}
public class Demo17 {
public static void main(String[] args) {
Moon m1 = Moon.getMoon();
Moon m2 = Moon.getMoon();
System.out.println(m1==m2);//true
}
}