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