设计模式

一、.单例模式

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.动态代理

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容