文档章节

创建者模式

清尘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
粉丝 43
博文 107
码字总数 47780
作品 0
青岛
程序员

暂无文章

php 使用redis锁限制并发访问类

1.并发访问限制问题 对于一些需要限制同一个用户并发访问的场景,如果用户并发请求多次,而服务器处理没有加锁限制,用户则可以多次请求成功。 例如换领优惠券,如果用户同一时间并发提交换领...

豆花饭烧土豆
10分钟前
0
0
Linux环境搭建 | 手把手教你配置Linux虚拟机

在上一节 「手把你教你安装Linux虚拟机」 里,我们已经安装好了Linux虚拟机,在这一节里,我们将配置安装好的Linux虚拟机,使其达到可以开发的程度。 Ubuntu刚安装完毕之后,还无法进行开发,...

良许Linux
12分钟前
0
0
Nginix开启SSL支持HTTPS访问(自签名方法)

Nginix开启SSL支持HTTPS访问(自签名方法) 超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合,用以提供加密通讯及对网络服务器...

openthings
28分钟前
0
0
(三)Nginx配置·续

概述 前文写了关于Nginx环境配置,但是还没有完,接下来将会继续讲三个相关的配置 主要是以下三个 1.Nginx访问日志 2.Nginx日志切割 3.静态文件不记录日志和过期时间 Nginx访问日志 1.先看看...

杉下
今天
1
0
jquery创建类似于java的map

var map = {}; // Map map = new HashMap(); map[key] = value; // map.put(key, value); var value = map[key]; // Object value = map.get(key); var has = key in map; // boolean has = ......

SuperDabai
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部