建造者模式

来源:互联网 发布:ubuntu命令行 编辑:程序博客网 时间:2024/05/10 12:57

定义:建造者模式主要是把一个复杂对象通过相同的构建过程构建出不同组件的对象。

应用情景:制造不同类型的男女机器人。

在该设计模式中,有以下几种重要角色:
builder:制造者,制造过程中的操作者。
Director:指挥者,制造过程中的指挥者。
product:产品,被制造的对象

首先定义一个产品父类robot

/** * 机器人类 */public class Robot {    private String head;  //头    private String body;  //身体    private String foot;  //脚    public Robot() {    }    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;    }}

接下来定义产品类型男机器人和女机器人:

/** * 男机器人 */public class ManRobot extends Robot{    public ManRobot(){        System.out.println("制造了一个男机器人");    }}
/** * 女机器人 */public class WomenRobot extends Robot{    public WomenRobot(){        System.out.println("制造了一个女机器人");    }}

定义一个产品制造者接口:

/** * 机器人制造者接口 */public interface RobotBuilder {    public void buildHead();    public void buildBody();    public void buildFoot();    public Robot buildRobot();}

接下来定义具体的男女机器人制造者实现制造者接口

/** * 男机器人制造者 */public class ManRobotBuilder implements RobotBuilder{    private Robot robot;    public ManRobotBuilder() {        robot = new ManRobot();    }    @Override    public void buildHead() {        robot.setHead("男机器人头部");    }    @Override    public void buildBody() {        robot.setBody("男机器人身体");    }    @Override    public void buildFoot() {        robot.setFoot("男机器人脚部");    }    @Override    public Robot buildRobot() {        return robot;    }}
/** * 女机器人制造者 */public class WomenRobotBuilder implements RobotBuilder{    private Robot robot;    public WomenRobotBuilder() {        robot = new WomenRobot();    }    @Override    public void buildHead() {        robot.setHead("女机器人头部");    }    @Override    public void buildBody() {        robot.setBody("女机器人身体");    }    @Override    public void buildFoot() {        robot.setFoot("女机器人脚部");    }    @Override    public Robot buildRobot() {        return robot;    }}

最后定义一个指挥者,指挥制造者制造过程

/** * 制造过程指导者 */public class RobotDirector {    public static Robot constructRobot(RobotBuilder builder){        builder.buildHead();        builder.buildBody();        builder.buildFoot();        return builder.buildRobot();    }}   

测试:

/** * 建造者设计模式测试类 */public class Test {    public static void main(String[] args) {        RobotBuilder manRobotBuilder = new ManRobotBuilder();        RobotBuilder womenRobotBuilder = new WomenRobotBuilder();        //指导员指导男机器人制造者制造男机器人        RobotDirector.constructRobot(manRobotBuilder);        //指导员指导女机器人制造者制造女机器人        RobotDirector.constructRobot(womenRobotBuilder);    }}
0 0
原创粉丝点击