创建型模式 | 定义 | 适用场景 |
---|---|---|
静态工厂方法模式(Static Factory Method Mode) | 对于对象的创建,交给工厂类内部的静态方法实现 | 适用于基类的子类较少时,且基本不会再增加子类时。坏处,当子类增加时,需要修改工厂类的内部,违背了开闭原则。 |
抽象工厂模式(Abstract Factory) | 对于对象的创建,交给抽象工厂的子类工厂去实现。 | 当基类的子类增加时,我可以增加对于的工厂子类去创建对象,符合开闭原则。 |
单态模式(Singleton) | 单例对象能保证在一个JVM中,该对象只有一个实例存在 | 有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。 |
建造者模式(BuilderMode) | 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。[构建与表示分离,同构建不同表示] | 1、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。2、当构造过程必须允许被构造的对象有不同的表示时。 |
原型模式(Prototype) | 用原型实例指定创建对象的种类,并且通过克隆这些原型创建新的对象。 | 原型模式本质上就是对象的拷贝,使用对象拷贝代替对象创建的原因有很多。比如对象的初始化构造非常复杂,消耗资源巨大;运行时对象状态变化不可重现;无法获得对象的成员的运行时值等。使用原型模式创建对象比直接new一个对象在性能上要好的多,因为Object类的clone方法是一个本地方法,它直接操作内存中的二进制流,特别是复制大对象时,性能的差别非常明显 |