Java构建器模式实现原理及优缺点解析

  

Builder模式中文叫作建造者模式,又叫生成器模式,它属于对象创建型模式,是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。下图是建造者模式的通用类图:
  

  

癑ava构建器模式实现原理及优缺点解析“
  

  

在建造者模式中,有如下4种角色:

  
      <李>产品:产品角色李   <李>建设者:抽象建造者,定义产品接口   <李> ConcreteBuilder:具体建造者,实现Builder定义的接口,并且返回组装好的产品李   <李>导演:指挥者,属于这里面的老大,你需要生产什么产品都直接找它。   
  

<强>
  

  

<强>家装
  

  

家装不管是精装还是简装,它的流程都相对固定,所以它适用于建造者模式。我们就以家装为例,一起来学习了解一下建造者模式。下图是家装建造者模式简单的UML图。

  

癑ava构建器模式实现原理及优缺点解析"

  

<强> 1,家装对象类
  

     /* *   *家装对象类   */公共类的房子{//买家电   私人字符串jiadian;//买地板   私人字符串智利;//买油漆   私人字符串youqi;      公共字符串getJiadian () {   返回jiadian;   }      公共空间setJiadian(字符串jiadian) {   这一点。jiadian=jiadian;   }      公共字符串getDiban () {   返回智利;   }      公共空间setDiban(字符串智利){   这一点。智利=智利;   }      公共字符串getYouqi () {   返回youqi;   }      公共空间setYouqi(字符串youqi) {   这一点。youqi=youqi;   }      @Override   公共字符串toString () {   返回“{”+   “jiadian=" + jiadian \“+ +”   ”,智利=" +智利\“+ +”   ”,youqi=" + youqi \“+ +”   '} ';   }   }      

<强> 2,抽象建造者构建器类
  

     /* *   *抽象建造者   */公共接口生成器{//买家电   空白doJiadian ();//买地板   空白doDiBan ();//买油漆   空白doYouqi ();      房子getHouse ();   }      

<强> 3,具体建造者——简装建造者类
  

     /* *   *简装创建者   */公共类JianzhuangBuilder实现生成器{      私人住宅房子=新房子();      @Override   公共空间doJiadian () {   house.setJiadian(“简单家电就好”);   }      @Override   公共空间doDiBan () {   house.setDiban(“普通地板”);   }      @Override   公共空间doYouqi () {   house.setYouqi(“污染较小的油漆就行”);   }      @Override   公共房屋getHouse () {   返回房子;   }   }      

<强> 4,具体建造者——精装建造者类
  

     /* *   *精装创建者   */公共类jingzhuangBuilder实现生成器{      私人住宅房子=新房子();      @Override   公共空间doJiadian () {   house.setJiadian(“二话不说,最好的”);   }      @Override   公共空间doDiBan () {   house.setDiban(“二话不说,实木地板”);   }      @Override   公共空间doYouqi () {   house.setYouqi(“二话不说,给我来0污染的”);   }      @Override   公共房屋getHouse () {   返回房子;   }   }      

<强> 5,指挥官——家装公司类
  

     /* *   *家装公司,值需要告诉他精装还是简装   */公开课HouseDirector {      公共房屋建筑商(生成器生成器){   houseBuilder.doDiBan ();   houseBuilder.doJiadian ();   houseBuilder.doYouqi ();   返回houseBuilder.getHouse ();   }   }      

<强> 6,测试
  

        公共类应用{   公共静态void main (String [] args) {   房子();   }      公共静态空房子(){   HouseDirector HouseDirector=new HouseDirector ();//简装   JianzhuangBuilder JianzhuangBuilder=new JianzhuangBuilder ();   System.out.println(“我要简装”);   System.out.println (houseDirector.builder (jianzhuangBuilder));//精装   jingzhuangBuilder jingzhuangBuilder=new jingzhuangBuilder ();   System.out.println(“我要精装”);   System.out.println (houseDirector.builder (jingzhuangBuilder));      }   }

Java构建器模式实现原理及优缺点解析