JavaScript设计模式学习——builder pattern(建造者模式)

个人理解的应用场景

举个例子,比如想要创建各种类型的车的实例,车的类型有很多种,但创建每种类型车的接口定义可能是一样的,就用到了此模式

相关概念的通俗解释

  1. 上述例子中接口的定义叫builder
  2. 接口到每种类型的车的具体实现叫concrete builder
  3. 真正用于创建车的类叫director

实现模式的思路

1.首先要定义builder的接口

2.然后各个concretebuilder类去实现这个接口

3.director中接收一个builder实例作为参数,最后返回一个一类车的实例

示例代码

function Director() {
    this.construct = function (builder) {
        builder.step1();
        builder.step2();
        return builder.get();
    }
}
//由于js不支持接口,我个人认为其实应当typescript定义一个接口,然后下面两个类去实现这个接口
function CarBuilder() {
    this.car = null;
    this.step1 = function () {
        this.car = new Car();
    };
    this.step2 = function () {
        this.car.addParts();
    };
    this.get = function () {
        return this.car;
    };
}

function TruckBuilder() {
    this.truck = null;
    this.step1 = function () {
        this.truck = new Truck();
    };
    this.step2 = function () {
        this.truck.addParts();
    };
    this.get = function () {
        return this.truck;
    };
}

function Car() {
    this.doors = 0;
    this.addParts = function () {
        this.doors = 4;
    };
    this.say = function () {
        log.add("I am a " + this.doors + "-door car");
    };
}

function Truck() {
    this.doors = 0;
    this.addParts = function () {
        this.doors = 2;
    };
    this.say = function () {
        log.add("I am a " + this.doors + "-door truck");
    };
}

//其他开发者使用代码段
new Director().construct(new CarBuilder());

原文地址:https://www.cnblogs.com/zhangrenjian/p/8552288.html

时间: 2024-10-15 05:33:00

JavaScript设计模式学习——builder pattern(建造者模式)的相关文章

设计模式(五)Builder Pattern建造者模式

在我们日常生活中,如构建一个飞船,一个手机,一栋建筑,都会有非常复杂的组装,这时候应该用到建造者模式 以建造一个飞船为例 案例:造小页飞船 1.飞船各部分元件 package com.littlepage.BuilderPattern; public interface AirShipBuilder { Engine builderEngine(); OrbitalModule builderOrbitalModule(); Escape builderEscape(); } 2.飞船实体用来组

javascript设计模式学习之十——组合模式

一.组合模式定义及使用场景 组合模式将对象组合成树形结构,用以表示“部分—整体”的层次结构,除了用来表示树形结构之外,组合模式还可以利用对象的多态性表现,使得用户对单个对象和组合对象的使用具有一致性. 实现组合模式的关键: 在java等静态语言中,需要单个对象和组合对象都实现同样的抽象接口,这可以通过抽象类或者接口来实现. 在javascript中,对象的多态性是与生俱来的,没有编译器去检查对象的类型,因此实现组合模式的要点是保证组合兑现个单个对象用友同样的方法,这通常需要使用“鸭子类型”的思想

javascript设计模式学习之——装饰者模式

一.装饰者模式定义 装饰者模式可以动态地给某个对象添加一些额外的职责,而不会影响从这个类中派生的其他对象.这种为对象动态添加职责的方式就称为装饰者模式.装饰者对象和它所装饰的对象拥有一致的接口,对于用户来说是透明的. 和java等语言不同的是,java的装饰器模式是给对象动态添加职责,javascript中,给对象添加职责的能力是与生俱来的,更侧重于给函数动态添加职责. 二.java中的装饰者模式实现 package com.bobo.shejimoshi.derector; public cl

Javascript设计模式学习三(策略模式)

定义:定义一系列的算法,把它们一个个封装起来,并且使它们可以互相替换.目的:将算法的使用和算法的实现分离开来.比如: if(input == 'A'){ return 1; } if(input == 'B'){ return 2; } if(input == 'C'){ return 3; } //或者 switch(input){ case 'A': console.log(1); break; case 'B': console.log(2); break; case 'C': conso

设计模式学习--Builder

What Builder:将一个复杂的对象的构建和表示分离,使得同样的构建过程可以创建不同的表示. Why Builder也是创建型模式的一种,它是一步一步的向导式的创建一个复杂的对象,Builder接口定义创建复杂对象的零部件,Director根据客户端端传入的builder按照一定的步骤创建完成复杂对象的创建. Builder适用于比较复杂的对象的创建,该对象的创建有比较稳定的步骤或者比较稳定的"零件",但是"零件"(步骤)内部的构建是复杂多变的. 设计模式书中

学习日记之建造者模式和Effective C++

建造者模式(Builder):建一个复杂的对象的构建和它的表示分离,使得同样的构造过程可以创建不同的表示. (1),主要创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化. (2),建造者模式的好处就是使得建造代码和表示代码分离,由于建造者隐藏了该产品是符合组装的,所以如需要改变一个产品的内部表示,主需要在定义一个具体的建造者就可以了. (3),建造者模式是在创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时适用的模式. Effect

设计模式学习(二)-简单工厂模式

---恢复内容开始--- 简单工厂设计模式 简单工厂模式定义: 简单工厂设计模式又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式.在简单工厂模式中,可以根据参数的不同返回不同类的实例.简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 简单工厂主要分为如下几个角色 抽象产品(abstract product):为所有具体产品的抽象表现,一般为抽象类 具体产品(product):为抽象产品的具体实现 生成产品工厂(facto

设计模式学习03—抽象工厂模式

1.动机与定义 工厂模式中,一个工厂仅仅能提供一个或一类产品,当产品种类较多,形成产品系列(比方我们要创建跨平台的button,菜单,文本框等等一系列GUI控件: 单纯使用工厂模式会产生大量工厂,并且后期维护也不方便,我们能够从产品中找到规律,假设产品等级相对固定,以后仅仅会新增产品族,那么我们就能够把整个产品族放到一个工厂创建,以后新增其它系统产品族也很方便,例如以下图: 这样的模式就是抽象工厂,工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则须要面对多个产品等级结构,一个工厂等级结构能

Builder(建造者模式)

public interface Builder { public void buildHead(); public void buildBody(); public void buildHand(); public void buildFoot(); public Person buildPerson(); } public class ManBuilder implements Builder{ Person person; public ManBuilder(){ person = new