设计模式之Builder模式

Builder模式是将构建复杂对象的过程和它的部件解耦.

因为一个复杂的对象,不但有很多大量组成部分,如汽车,有很多部件:车轮 方向盘 发动机还有各种小零件等等,部件很多,但远不止这些,如何将这些部件装配成一辆汽车,这个装配过程也很复杂(需要很好的组装技术),Builder模式就是为了将部件和组装过程分开.

理解Builder模式:

        生产流水线:以前是手工业作坊式的人工单个单个的生产零件然后一步一步组装做,好比有了工业革命,现在都由生产流水线代替了。如要造丰田汽车,先制定汽车的构造如由车胎、方
向盘、发动机组成。再以此构造标准生产丰田汽车的车胎、方向盘、发动机。然后进行组装。最后得到丰田汽车.

举例:

看到网上一个造房子的例子比较好理解,所以就拿来借用下.造房子本身比较复杂,因为各个部件如门,窗,墙,栋梁等需要建筑工人的构造,还有各个部件的组装就更显得重要而复杂,所以一般都要有设计师来画图来指挥各个部件的组装.而设计师本身也不干活,光是下命令,这里砌一堵墙,这里砌一扇门,这样建筑工人开始建设,最后,我可以向建筑工人要房子了。在这个过程中,设计师是什么也没有,除了他在脑子里的设计和命令,所以要房子也是跟建筑工人要,记住了!

package builder;

public interface Builder
{
public  void makeWindow();
public  void makeFloor();
public  Room  getRoom();

}


/*************************************************************/
package builder;

public class Designer {

  public Designer() {
  }
  public void order(Builder  builder) 
{
  builder.makeWindow();
  builder.makeFloor();

}

 }

/*************************************************************/
package builder;
public class Worker implements Builder{
  private  String window="";
  private  String floor="";
  public Worker() {
  }
    public  void makeWindow(){
  window=new String("window");
  }
  public  void makeFloor(){
  floor=new String("floor");
  }
  public  Room  getRoom()
  {
  if((!window.equals(""))&&(!floor.equals("")))
    {
    System.out.println("room ready!");
    return new Room();
    }
  else return null;
  }
}

/*************************************************************/
package builder;
public class Room {
  private  String window="";
  private  String floor="";
  public Room() {
  }
  }
/*************************************************************/

package builder;

public class Client {

  public Client() {
  }
  public static void main(String[] args) {
     Builder worker=new Worker();
     Designer  designer=new      Designer();
     designer.order(worker);
     worker.getRoom();
  }
}

阅读更多
个人分类: 设计模式
上一篇马坦故事连载一
下一篇马坦故事连载二、三------“站着,我能骗你坐下来”与“先生要先死,先死的先生”
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭