创建型模式的主要关注点是"怎样创建对象?",它的主要特点是"将对象的创建与使用分离"。也就是说,如果我们作为一个使用者的话,那么我们可以直接通过某种方式去获取别人创建好的对象,至于别人是如何创建的,我们并不关注。这样,就可以降低系统的耦合度了,使用者并不需要关注对象的创建细节,尤其是那些创建特别麻烦的对象。于是,创建型模式的好处就这样体现出来了。
创建型模式分为以下几种:
1. 单例模式
2. 工厂方法模式
3. 抽象工厂模式
4. 原型模式
5. 建造者模式
一、单例设计模式
1.为什么要使用单例?
单例设计模式(Singleton Design Pattern)指一个类只允许创建一个对象(或者实例),这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。
举例: 1. 处理资源访问冲突 2. 表示全局唯一类
2.如何实现一个单例?
构造函数需要是 private 访问权限的,这样才能避免外部通过 new 创建实例;
考虑对象创建时的线程安全问题;
考虑是否支持延迟加载;
考虑 getInstance() 性能是否高(是否加锁)。
单例设计模式主要有两种角色:
- 单例类:该类只能创建一个对象
- 访问类:该类其实就是测试类,即使用单例类
3.单例存在哪些问题?
4.单例与静态类的区别?
5.有何替代的解决方案?
二、工厂模式
1.概述
2.简单工厂模式
简单工厂模式有如下优缺点:
优点:封装了创建对象的过程,可以通过参数直接获取对象。把对象的创建和业务逻辑分开(现在的业务逻辑就是咖啡店点咖啡的这个业务,而该业务已经与具体的咖啡对象解除耦合了),这样以后就避免了修改客户端代码,如果要实现新产品,那么直接修改工厂类即可,而不需要再在原代码上进行修改了,这样就降低了客户端代码修改的可能性,更加容易扩展
缺点:增加新产品时还是需要修改工厂类的代码,违背了开闭原则。虽然违背了开闭原则,但是比之前不用简单工厂模式还是要更好一些。