Java设计模式之建造者模式实例详解

  

本文实例讲述了Java设计模式之建造者模式。分享给大家供大家参考,具体如下:

  

<>强建造者模式(builder) 可以将部件和其组装过程分开。一步一步创建一个复杂的对象。

  

用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节。

  

<强>什么情况下会用到建造者模式?

  

个人理解,当我们创建的对象在创建时需要逻辑的时候。

  

比如,一个简单的pojo对象,我们想要创建,直接就可以新出来,没有什么逻辑。

  

当有一个复杂的对象,你想要创建它时,它的各个属性之间是有逻辑关系的。

  

一个属性赋值取值依赖于其他属性。那么这个对象的创建就不是简单的新出来的。

  

在创建之前,我们必须把这个逻辑写清楚。

  

建造模式使得客户不需要知道太多产品内部的细节。它将复杂对象的组建和表示方式封装在一个具体的建造角色中,而且由指导者来协调建造者角色来得到具体的产品实例。

  

<强>它的模型:

  

癑ava设计模式之建造者模式实例详解"

  

抽象产品类产品

        包org.test.design.build;/* *   *影视,书籍等作品   * @author lushuaiyin   *   */公共抽象类产品{   公共字符串作者;//作者   公共int基金=0;//耗资   公共字符串workName;//作品名称   公共字符串workType;//作品类型   公共字符串内容;//其他信息   公共字符串getAuthor () {   返回作者;   }   公共空间setAuthor(字符串作者){   这一点。作者=作者;   }   公共int getFunds () {   回报基金;   }   公共空间setFunds (int基金){   这一点。基金=基金;   }   公共字符串getWorkName () {   返回workName;   }   公共空间setWorkName(字符串workName) {   这一点。workName=workName;   }   公共字符串getWorkType () {   返回workType;   }   公共空间setWorkType(字符串workType) {   这一点。workType=workType;   }   公共字符串getContent () {   返回内容;   }   公共空间setContent(字符串内容){   这一点。内容=内容;   }   公共字符串printString () {   返回“产品=? +”作者,作者基金=白式? +”,workName="   + workName +”, workType=" + workType +”,内容=" +内容   +“]”;   }   }      之前      

具体产品类,Movie 书

        包org.test.design.build;   公共类电影延伸产品{   私人字符串演员;//主演   私人字符串主任;//导演   公共字符串getActor () {   返回的演员;   }   公共空间setActor(字符串演员){   这一点。演员=演员;   }   公共字符串getDirector () {   返回主任;   }   公共空间setDirector董事(String) {   这一点。导演=主管;   }   }      之前            包org.test.design.build;   公开课书延伸产品{   私人int价格=0;   公共int getPrice () {   回报价格;   }   公共空间setPrice (int价格){   这一点。价格=价格;   }   }      之前      

抽象建造者Builder

        包org.test.design.build;/* *   *对象的构建逻辑描述   *影视,书籍等作品创建步骤   * @author lushuaiyin   *   */公共接口生成器{   无效招聘();//人员招募   空白writeScript();//写剧本,书   空白raiseFunds();//筹集资金   无效传播();//宣传   空白释放();//出版,发行,上映   产品buildProduct ();   }      之前      

具体建造者MovieBuilder 累计

        包org.test.design.build;/* *   *电影对象的构建逻辑具体实施   * @author lushuaiyin   *   */公共类MovieBuilder实现Builder {   公共产品电影=新电影();//这里是上转型对象的使用/*   假如我们创建的对象只关心行为特征,那么就可以使用父类或者接口来声明对象。   这样就不会在创建的时候就不会涉及到具体对象类的其他私有属性。   如果我们在创建的时候,关心这些属性。那么就直接使用子类新出对象。   电影电影电影=new ();   */公共空间招聘(){   movie.setAuthor(“詹姆斯·卡梅隆”);   }   公共空间writeScript () {   movie.setWorkName(“阿凡达”);   }   公共空间raiseFunds () {   movie.setFunds (200000);   }   公共空间传播(){   movie.setContent(“首部3 d科幻巨作!”);   }   公共空间释放(){   movie.setWorkType (“3 d电影”);   }   公共产品buildProduct () {   返回电影;   }   }      

Java设计模式之建造者模式实例详解