美文网首页JavaScript
04 建造者模式

04 建造者模式

作者: 柏丘君 | 来源:发表于2017-08-08 17:58 被阅读5次

建造者模式是一种资源整合的模式,就是将不同的部件(类)组合成一个成品,就像建造房子一样,将砂石、钢筋、玻璃等组合成一栋成品的房子。

场景

在项目设计阶段,我们需要尽可能的进行模块化,以降低各个模块的耦合度,实现功能划分。比如实现一个简历,简历中可能有这样的信息:姓名年龄等基本信息、工作经验、职业技能、个人评价等。这些信息可以作为简历对象的属性存在,也可以将它们更细粒度的划分独立的类:基本信息类、工作经验类、职业技能类、个人评价类等。
这样划分方便了后期的维护扩展,比如要在基本信息项中添加新的描述符,只需要修改基本信息类中的内容,而不是对简历类这个大类进行修改,减少了出错的几率,也使代码更加可读可维护。
如何把这些独立的类整合到成品类中呢?这就需要使用建造者模式。

实现

我们来实现上面提到的简历类,首先根据简历的功能模块,来创建几个独立的类。

class PersonalInfo{
    constructor(name,school,cellphone){
        this.name = name;
        this.school = school;
        this.cellphone = cellphone;
    }

    showPersonalInfo(){
        console.log(`name:${this.name},school:${this.school},cellphone:${this.cellphone}`)
    }
}

// 职业技能类
class PersonalSkill{
    constructor(skill_name,skill_desc){
        this.skill_name = skill_name;
        this.skill_desc = skill_desc;
    }

    showPersonalSkill(){
        console.log(`skill_name:${this.skill_name},skill_desc:${this.skill_desc}`)
    }
}

// 个人评价类
class PersonalState{
    constructor(content){
        this.content = content;
    }

    showPersonalState(){
        console.log(`content:${this.content}`)
    }
}

接下来,创建一个 Person 类,用来对这些功能类进行组合,也是我们最终要使用的成品类。

// 个人类
class Person{
    constructor(info){
        // 提取个人信息
        const { 
            name,
            school,
            cellphone,
            skill_name,
            skill_desc,
            content
        } = info;
        // 将提取到的信息进行分发,创建相应的对象
        this.personalInfo = new PersonalInfo(name,school,cellphone);
        this.personalSkill = new PersonalSkill(skill_name,skill_desc);
        this.personalState = new PersonalState(content);
    }
}

上面在 Person 类中对 PersonalInfoPersonalSkill````、PersonalState三个工具类进行了整合,对于这三个类的具体实现,Person类中不用担心,交给它们各自实现。Person``` 类只负责组合这些类,其的实例对象也可以访问三个工具类中的方法。
下面是测试代码:

const MIKE = new Person({
name:"MIKE",
school:"MIT",
cellphone:"13000000000",
skill_name:"吃东西",
skill_desc:"吃各种各种好吃的东西~",
content:"吃货一枚"
});

// 调用方法
MIKE.personalInfo.showPersonalInfo()
MIKE.personalSkill.showPersonalSkill()
MIKE.personalState.showPersonalState()

运行结果:

name:MIKE,school:MIT,cellphone:13000000000
skill_name:吃东西,skill_desc:吃各种各种好吃的东西~
content:吃货一枚

完。

相关文章

  • Builder Pattern in Java

    建造者模式:建造者模式定义建造者模式应用场景实现案例Jdk中的建造者模式建造者模式的优点建造者模式的缺点 建造者模...

  • 《设计模式笔记》之04建造者解析

    《设计模式笔记》之04建造者解析 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • 04 建造者模式

    建造者模式是一种资源整合的模式,就是将不同的部件(类)组合成一个成品,就像建造房子一样,将砂石、钢筋、玻璃等组合成...

  • 设计模式(4) 建造者模式

    什么是建造者模式 经典建造者模式的优缺点 对建造者模式的扩展 什么是建造者模式 建造者模式将一个复杂的对象的构建与...

  • 建造者模式(部件构造)

    目录 建造者模式的理念 从 POJO 到建造者模式的思考 怎么来实现建造者模式 建造者模式在Android源码中的...

  • 【设计模式】之建造者Builder模式

    建造者模式 什么是建造者模式? 建造者模式属于创建型模式的一员,可以控制对象的实例化过程。建造者模式简化了复杂对象...

  • 建造者模式

    一、建造者模式介绍 二、建造者模式代码实例

  • 建造者模式

    建造者模式 首先,建造者模式的封装性很好。使用建造者模式可以有效的封装变化,在使用建造者模式的场景中,一般产品类和...

  • 建造者模式:深入理解建造者模式 ——组装复杂的实例

    目录: 一 建造者模式介绍 1.1 定义 1.2 为什么要用建造者模式(优点)? 1.3 哪些情况不要用建造者模式...

网友评论

    本文标题:04 建造者模式

    本文链接:https://www.haomeiwen.com/subject/txfxrxtx.html