JS建造者模式
掘金安东尼 人气:0我们在前面已经提过设计模式创建型模式的 3 种工厂模式 和 单例模式;本篇带来同属创建型模式的“建造者模式”
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。它提供了一种创建对象的最佳方式。
一个 Builder
类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。
建造者模式:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。
它的优点是:
- 1、建造者独立,易扩展。
- 2、便于控制细节风险
缺点:
- 1、产品必须有共同点,范围有限制。
- 2、如内部变化复杂,会有很多的建造类。
当我们需要生成的对象具有复杂的内部结构或需要生成的对象内部属性本身相互依赖时,会借助它来解决问题;
实战举例:
比如说,我们要建造一辆车:
function car () { this.name = '', this.number = '', this.wheel = '', this.engine = '' }
车由名字、车牌号、轮子、引擎组成;
然后,我们在建造类中分门别类建造他们:
function carBuilder () { this.nameBuilder = function () { this.name = '宝马' }, this.numberBuilder = function () { this.number = '88888888' }, this.wheelBuilder = function () { this.wheel = '米其林轮胎' }, this.engineBuilder = function () { this.engine = 'V8引擎' }, this.getCar = function () { var Car = new car() Car.name = this.name; Car.number= this.number; Car.wheel = this.wheel; Car.engine = this.engine; return Car; } }
然后,再统一指挥来组装构建:
function director () { this.action = function (builder) { builder.nameBuilder(); builder.numberBuilder(); builder.wheelBuilder(); builder.engineBuilder(); } } var builder = new carBuilder(); // 构建类 var director = new director(); // 指挥构建 director.action(builder); // 应用构建 var Car = builder.getCar(); // 创建 console.log(Car);
建造者模式主要用于“分布构建一个复杂的对象”,它很容易进行扩展。如果有新的需求,通过实现一个新的建造者类就可以完成,并且建造者模式解耦了对象本身与构建过程,使得我们不用关心具体的建造过程。
要注意:与工厂模式的区别是:建造者模式更加关注与零件装配的顺序。
加载全部内容