- 单例模式只能有一个实例
- 单例类必须自己创建自己的唯一实例
- 单例类必须给其他所有对象提供这一实例
- 加载时间:饿汉式是类一旦加载,就把单例初始化完成,懒汉式只有在调用的时候,才去初始化这个单例
- 线程安全:饿汉式天生线程安全,懒汉式非线程安全
- 资源和性能:饿汉式类加载就就进行初始化,不管用不用,这个实例都会占用一定的资源,但是相应的需要使用时速度更快(已经初始化完成), 懒汉式会延迟加载,第一次使用时会实例化,如果实例化需要做的工作较多就会影响性能,之后就和饿汉式一样
2.工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式 https://yq.aliyun.com/articles/11335?spm=5176.100239.blogcont11334.10.1IhtdF#)
-
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。 举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。在这些情况,新对象的建立就是一个"过程",不仅是一个操作,像一部大机器中的一个齿轮传动。
-
模式的问题:你如何能轻松方便地构造对象实例,而不必关心构造对象实例的细节和复杂过程呢?
-
解决方案:建立一个工厂来创建对象
- 简单工厂
- 工厂方法
- 抽象工程