设计模式

一、.单例模式

1.三要素:

私有化构造器

类内创建对象

对外提供获取对象的public方法

2.饿汉式

类的初始化时,构建静态属性对象,或在静态块中创建对象,由于类的加载只有一次,所以饿汉式是天然线程安全的,但是由于初始化类就加载对象,可能会造成内存浪费。

3.懒汉式(方法加synchronized,线程安全)

getInstance()方法内创建对象,由于方法被同步,可以确保线程安全,可用,但是影响效率。

4.双重检查

配合volatile关键字,确保属性(对象)对多线程具有可见性。

懒汉式,getInstance()方法内加synchronized同步块,线程安全,双重检查确保效率。

public class SafeDoubleCheckedLocking {

        private volatile static Instance instance;

        private SafeDoubleCheckedLocking (){

        }

        public  static Instance getInstance(){

          if(instance ==null) {

              synchronized (SafeDoubleCheckedLocking.class) {

                  if (instance == null)

                    instance = new Instance();

                  }

            }

            return instance;

        }

}

二、代理模式

1.静态代理、动态代理

2.静态代理:

代理对象与被代理对象耦合,不实用

3.动态代理

利用反射,动态获取被代理对象

©著作權歸作者所有,轉載或內容合作請聯系作者

推薦閱讀更多精彩內容

友情链接更多精彩内容