1.单例模式
单例模式特点:1.单例类只能有一个实例(单例模式的构造方法是修饰符是private)
2.单例类必须自己创建自己唯一的实例
3.单例类必须给所有其他对象提供这一个实例
单例模式有多种写法
懒汉式:在第一次调用的时候,实例化自己
public class Singleton {
//懒汉写法
private static Singleton singleton;
private Singleton(){
}
//线程不安全的写法
/* public static Singleton getInstance(){
if(singleton==null){
Singleton singleton = new Singleton();
}
return singleton;
}*/
//线程安全的写法
public static synchronized Singleton getInstance(){
if(singleton==null){
Singleton singleton = new Singleton();
}
return singleton;
}
}
饿汉式:对象创建的时候就被实例化,
public class SingleTonE {
private static SingleTonE single = new SingleTonE();
private SingleTonE(){
}
public static SingleTonE getInstance(){
return single;
}
}
饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以是线程安全的。
静态内部类写法
public class Singleton {
private static class LazyHolder{
private static final Singleton INSTANCE = new Singleton();
}
private Singleton(){ }
public static final Singleton getInstance(){
return LazyHolder.INSTANCE;
}
}
双重检查锁定
public class Singleton {
private volatile static Singleton singleton;
private Singleton (){}
public static Singleton getSingleton() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
单例参考:https://blog.csdn.net/jason0539/article/details/23297037
2.观察者模式
3.工厂模式
4.代理模式
5.策略模式
6.模板方法模式
7.装饰者模式
8.适配器模式
9.生产者消费者模式
原文:https://www.cnblogs.com/ghwq/p/12814246.html