- 单例模式
单例模式的适用场景是复用唯一的单实例,例如创建数据库连接只创建一个唯一连接,之后所有sql都复用该连接。
单例模式如何实现:
1、需要一个private的构造函数;
2、需要一个静态成员保存类的唯一实例;
3、需要一个能创建类唯一实例的静态方法;
- 工厂模式
工厂模式不是一种模式,而是简单工厂模式、工厂方法模式和抽象工厂模式共3种模式。
工厂模式的作用是返回一个创建好的对象。
1、简单工厂模式/工厂方法模式的使用场景:创建一个对象需要大量复杂的初始化操作的情况下,由工厂类实现对象的创建和初始化(复杂的初始化操作不放入构造函数,构造函数只放简单的初始化操作)。
如果口罩类存在子类:高级口罩和低级口罩,那么分别设立高级口罩工厂类和低级罩工厂类,而不是在一个口罩工厂类中通过if-else判断生产多个种类的口罩,不然就违反了面向对象的开放-封闭原则,就是在程序中对“扩展”开放,对“修改”封闭。
用 if-else 扩展不同类型的对象就是简单方法模式;创建多个工厂类对应不同类型的对象就是工厂方法模式。
抽象工厂类的使用场景:如果有100种不同的类,用工厂方法需要定义100个工厂方法。为了避免该情况可以使用将性质相似的类分组,每个分组创建一个工厂类,每一个工厂类是一个抽象的工厂类。
一个抽象工厂类的多个方法中,每个方法对应一种该分组下的工厂方法用来创建实例。
例如 有口罩和防护服两种产品,都分为高级和低级。则可以创建高级产品工厂类和低级产品工厂类。高级产品工厂类包含两个方法:createMask() 和 createSuit()。分别用来创建口罩对象和防护服对象。