Java设计模式_创建型_建造模式_机器人的制造

来源:互联网 发布:大数据时代 思维变革 编辑:程序博客网 时间:2024/05/05 00:18

转载请注明出处:http://blog.csdn.net/ljmingcom304/article/details/50440323
本文出自:【梁敬明的博客】

1.机器人的组成结构

  建造者模式是一个相对简单的设计模式,该模式的核心思想就是将建造者与建造工具相分离,对于同一套建造工具,不同的建造者可以有不同的建造流程。本文机器人的制造为例来阐述建造模式。一个仿人类机器人可以简单的分为三部分,包括头部、身体和脚部。

//机器人public class Person {    private String head;    private String body;    private String foot;    public String getHead() {        return head;    }    public void setHead(String head) {        this.head = head;    }    public String getBody() {        return body;    }    public void setBody(String body) {        this.body = body;    }    public String getFoot() {        return foot;    }    public void setFoot(String foot) {        this.foot = foot;    }    @Override    public String toString() {        return "Person [body=" + body + ", foot=" + foot + ", head=" + head                + "]";    }}

2.机器人生产流水线

  机器人的生产流水线包括对机器人的头部组装、身体组装和脚部组装,最终组装完成以后就可以生产出一个完整的机器人。至于每部分的组装流程则交由工程师去决定。

//生产流水线public interface Builder<T> {    void buildHead();    void buildBody();    void buildFoot();    T getResult();}//机器人生产流水线public class PersonBuilder implements Builder<Person>{    private Person person = new Person();    @Override    public void buildBody() {        person.setHead("头部组装");    }    @Override    public void buildFoot() {        person.setBody("身体组装");    }    @Override    public void buildHead() {        person.setFoot("脚部组装");    }    @Override    public Person getResult() {        return person;    }}

3.工程师组装机器人

  工程师的任务就是在流水线上将机器人生产出来,具体的生产流程,则依据不用的业务需求或公司的具体状况由工程师自行进行设计。

//机器人工程师public class PersonDirector {    public Person constructPerson(Builder<Person> builder) {        builder.buildHead();        builder.buildBody();        builder.buildFoot();        return builder.getResult();    }}

4.生产第一台机器人

  工程师和生产流水线都已经准备就绪,现在测试生产第一台机器人。

public class Client {    public static void main(String[] args) {        PersonDirector director = new PersonDirector();        Person person = director.constructPerson(new PersonBuilder());        System.out.println(person.toString());    }}
0 0