文档章节

创建者模式

清尘V
 清尘V
发布于 2016/04/16 14:14
字数 364
阅读 13
收藏 0

创建者模式与工厂模式相似,但是创建者模式更倾向于细节:工厂模式只是生产汽车,而创建者模式则是倾向于组装汽车。

譬如说:生产一辆汽车,工厂模式仅仅是生产,不会透露细节;而创建者模式则是把轮子、引擎等部件组装为一部汽车。

下面看例子


汽车:

package com.whereta.builder;

/**
 * Vincent 创建于 2016/4/16.
 * 要组装的对象:汽车
 */
public class Car {
    /**
     * 引擎
     */
    private String engine;
    /**
     * 车轮
     */
    private String wheel;

    public String getEngine() {
        return engine;
    }

    public void setEngine(String engine) {
        this.engine = engine;
    }

    public String getWheel() {
        return wheel;
    }

    public void setWheel(String wheel) {
        this.wheel = wheel;
    }
}

创建者接口:

package com.whereta.builder;

/**
 * Vincent 创建于 2016/4/16.
 * 组装者接口
 */
public interface IBuilder {


    Car getCar();

    void buildWheel();

    void buildEngine();

}


创建者实现类:

package com.whereta.builder;

/**
 * Vincent 创建于 2016/4/16.
 */
public class BuilderImpl implements IBuilder {

    private Car car=new Car();

    public Car getCar() {
        System.out.println("车子组装好了");
        return car;
    }

    public void buildWheel() {
        System.out.println("开始组装车轮");
        car.setWheel("车轮");
    }

    public void buildEngine() {
        System.out.println("开始组装引擎");
        car.setEngine("引擎");
    }
}

指挥者:

package com.whereta.builder;

/**
 * Vincent 创建于 2016/4/16.
 */
public class Director {

    private  IBuilder builder;

    public void setBuilder(IBuilder builder) {
        this.builder = builder;
    }

    public void construct(){
        System.out.println("开始组装:");
        builder.buildEngine();
        builder.buildWheel();
    }

}

测试:

package com.whereta.builder;

import com.alibaba.fastjson.JSON;

/**
 * Vincent 创建于 2016/4/16.
 */
public class Main {
    public static void main(String[] args) {
        IBuilder builder=new BuilderImpl();
        Director director = new Director();
        director.setBuilder(builder);
        director.construct();
        Car car = builder.getCar();
        System.out.println(JSON.toJSONString(car));
    }
}

输出:

开始组装:
开始组装引擎
开始组装车轮
车子组装好了
{"engine":"引擎","wheel":"车轮"}

个人博客:http://www.whereta.com

© 著作权归作者所有

共有 人打赏支持
上一篇: 原型模式
下一篇: “求余”
清尘V
粉丝 41
博文 107
码字总数 47780
作品 0
青岛
程序员
私信 提问

暂无文章

oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
1分钟前
0
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
27分钟前
2
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
31
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部