设计模式学习——建造者模式(Builder Pattern)/生成器模式

    // 产品(Product)角色

    // 首先是房子类,主要是需要描述一下房屋属性

    public classRoom{

    private Stringwindow;

    private Stringfloor;

    }

    // 建造者(Builder)角色

    // 工人接口,定义了各个工人所要进行的工作。负责进行具体部件如窗户,地板的建造。

    // 同时因为房子是民工建的,因此建设完成后由他把房子递交回房主

    publicinterface Builder {

    public voidmakeWindow();

    public voidmakeFloor();

    public RoomgetRoom();

    }

    // 指导者(Director)角色

    // 设计师。他知道房子应该怎么设计,但他不会自己去建造,而是指挥工人建造。

    public classDesigner {

    // 指挥民工进行工作

    public voidorder(Builder builder) {

   builder.makeWindow();

   builder.makeFloor();

    }

    }

    // 具体建造者(Concrete Builder)角色

    // 工人, 负责进行具体部件如窗户,地板的建造。

    public classWorker implements Builder {

    private Roomroom = new Room();

    public voidmakeWindow() {

    room.window=new String("window");

    }

    public voidmakeFloor(){

    room.floor =new String("floor");

    }

    // 回交房子给房主

    public RoomgetRoom() {

    return room;

    }

    }

    // 我获取房子的流程

    public classClient {

    public staticvoid main(String[] args) {

    Builder worker= new Worker(); //获取工人对象

    Designerdesigner = new Designer(); //获取设计师对象

   designer.order(worker); //设计师指挥工人工作

   worker.getRoom(); //工人交房

    }
    } 

优点

  • 良好的封装性, 使用建造者模式可以使客户端不必知道产品内部组成的细节。
  • 每一个Builder都相对独立,而与其它的Builder无关。
  • 可使对构造过程更加精细控制。
  • 将构建代码和表示代码分开。

更为详尽的知识:http://www.cnblogs.com/cbf4life/archive/2010/01/14/1647710.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值