![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
创建型
文章平均质量分 76
loopnz_
这个作者很懒,什么都没留下…
展开
-
设计模式-创建型-单例模式
那么步骤3执行后 singleton 已经不为 null ,但是未执行步骤2,singleton对象初始化不完全,此时线程B执行 getInstance() 方法,第一步判断时 singleton 不为null,则直接将未完全初始化的singleton对象返回了。代码时,恰好这三个步骤重排序后为1 3 2,如果一个字段被声明成volatile,Java线程内存模型确保所有线程看到这个变量的值是一致的,同时还会禁止指令重排序。单例模式并不是绝对安全的,可以通过反射来破坏,只有枚举安全类是安全的。原创 2023-08-07 23:26:25 · 24 阅读 · 0 评论 -
设计模式-创建型-原型模式
意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。主要解决:在运行期建立和删除原型。1、当一个系统应该独立于它的产品创建,构成和表示时。2、当要实例化的类是在运行时刻指定时,例如,通过动态装载。3、为了避免创建一个与产品类层次平行的工厂类层次时。4、当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。如何解决:利用已有的一个原型对象,快速地生成和原型对象一样的实例。原创 2023-08-07 23:27:15 · 39 阅读 · 0 评论