设计模式 - 创建者模式

其核心思想是将一个“复杂对象的构建算法”与它的“部件及组装方式”分离,使得构件算法和组装方式可以独立应对变化;复用同样的构建算法可以创建不同的表示,不同的构建过程可以复用相同的部件组装方式。

主要优缺点

在创建者模式中,客户端不再负责对象的创建与组装,而是把这个对象创建的责任交给其具体的创建者类,把组装的责任交给组装类,客户端只负责对象的调用,从而明确了各个类的职责。

虽然利用创建者模式可以创建出不同类型的产品,但是如果产品之间的差异巨大,则需要编写多个创建者类才能实现,如果这是结合工厂模式更好。

组成部分

创建者模式主要由五个部分构成:组装类,抽象创建者类,实现抽象创建者类的具体创建者类,抽象产品和实现抽象产品的具体产品类。

代码示例

// Person
public class Person {
private String head;
private String body;
private String foot;
public String getHead() {
return head;
}
public void setHead(String head) {
this.head= head;
}
public String getBody() {
return body;
}
public String getFoot() {
return foot;
}
public void setFoot(String foot) {
this.foot= foot;
}
public void setBody(String body) {
this.body= body;
}
}
//Builder接口
public interface PersonBuilder{
   void buildHead();
   void buildBody();
   void buildFoot();
   Person buildPerson();
}
//Builder实现:人类
publicclass HumanBuilder implements PersonBuilder{
   private Person person;
   public HumanBuilder()   {
      this.person=new Person();
   }
   public void buildBody()    {
      this.person.setBody("创建 人类 身体!");
   }
publicvoid buildFoot() {
   this.person.setFoot("创建 人类 脚!");
}
publicvoid buildHead() {
this.person.setHead("创建 人类 头!");
}
public Person buildPerson() {
return person;
}
}
//Builder实现:变形金刚
publicclass TransformerBuilder implements PersonBuilder {
private Person person;
public TransformerBuilder(){
this.person=newPerson();
}
publicvoid buildBody() {
this.person.setBody("创建 变形金刚 身体!");
}
public void buildFoot() {
this.person.setFoot("创建 变形金刚 脚!");
}
publicvoid buildHead() {
this.person.setHead("创建 变形金刚 头!");
}
public Person buildPerson() {
return person;
}
}
//Director构建向导
publicclass PersonDirector {
   public Person constructPerson(PersonBuilder pb)   {
      pb.buildHead();
      pb.buildBody();
      pb.buildFoot();
      return pb.buildPerson();
   }
}
//测试
publicclass Test {
   publicstaticvoid main(String[] args)    {
   PersonDirector pd = new PersonDirector();
   Person person = pd.constructPerson(new HumanBuilder());
   System.out.println(person.getBody());
   System.out.println(person.getFoot());
   System.out.println(person.getHead() +" \n");
   Person transformer = pd.constructPerson(newTransformerBuilder());
   System.out.println(transformer.getBody());
   System.out.println(transformer.getFoot());
   System.out.println(transformer.getHead());
   }
}
时间: 2024-10-20 14:44:51

设计模式 - 创建者模式的相关文章

java语言实现创建型设计模式—创建者模式

一.描述 创建者模式单独利用一个创建者类来创建对象并组建对象之间的关系,以简化客户端调用的复杂性.相对于抽象方法模式来说,创建者模式增加了一个单独的用于组装对象和对象之间关系的创建者类,由该类来负责对象的组装,以此来更加清晰地划分各个类的职责. 创建者模式将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示,而且对客户端屏蔽了对象的构建细节,该模式主要由5个部分组成:组装类.抽象创建者类,实现了抽象创建者类的具体创建者类,抽象产品类.实现了抽象产品类的具体产品类.在此可以看出

五分钟一个设计模式之创建者模式

五分钟一个设计模式,用最简单的方法来描述设计模式. 认识创建者模式 创建者模式(又叫生成器模式)是为创建一个产品而生的,这个产品的组装算法是确定的,但零部件可以分配给多个厂商生产.使用创建者模式来创建产品,可以把产品零部件的生产和组装分开了. 创建者模式包含以下几个部分: 产品(Product) 厂商的接口(Builder) 具体的厂商(ConcreteBuilder1.ConcreteBuilder2.-ConcreteBuilderN),实现厂商接口,负责产品零部件的生产工作 指导者(Dir

Java 设计模式:创建者模式

1.什么是创建者模式 创建者模式(Builder)是将一个复杂的对象的构建和他的表示分离,使得同样的构建过程可以创建不同的表示.比如就建造房子为例,现实生活中房子的样子是各种各样的,而且每座房子内的格局.大小等等都不一样,但是建造房子的流程基本都是一样的.创建者模式就是创建的流程保持不变,但是流程中每一步的细节是可以变化的,从而创建出不同的产品. 创建者模式中包括以下几个角色 (1).Builder 抽象建造者类,规定了产品的各个组成部分,并声明获取建造完成后产品的抽象方法. (2).Concr

"围观"设计模式(9)--创建型之创建者模式(Builder Pattern)

生成器模式(英:Builder Pattern)是一种设计模式,又名:建造模式,是一种对象构建模式.它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象.----WIKIPEDIA 个人的理解: 建造者模式可以设置不同的属性或者行为,创建出不一样的对象.比如说生产汽车,假如有三个重要的工序,塑形.拼装.上色.那么可以通过创建者模式来设置,这三道工序中不同的车来说,三道工序可能就是不一样的.通过创建者模式来创建出对象的表现形式也自然就不一样.

[设计模式] 4 创建者模式 builder

转载http://blog.csdn.net/wuzhekai1985/article/details/6667467 建造者模式的定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示(DP).<大话设计模式>举了一个很好的例子——建造小人,一共需建造6个部分,头部.身体.左右手.左右脚.与工厂模式不同,建造者模式是在导向者的控制下一步一步构造产品的.建造小人就是在控制下一步步构造出来的.创建者模式可以能更精细的控制构建过程,从而能更精细的控制所得产品的内部结构.下面给

Java设计模式之创建者模式,分享热爱编程的程序人生

PS:今天的23中设计模式中的创建者方式,至此告一段落.我今天带来的技术分享为创建者模式以及原型模式.当然在Java中这两种方式很常见,只不过我们写的次数确实有点低而已,但是这不是我不学它的借口!!! 创建者模式 无构建者模式代码示例:需求创建一个摩托车对象 并且使其开始运行. 发动机代码构建: 发动机代码构键 车架代码实例: 车架代码实例 轮胎机代码示例: 轮胎机代码示 摩托车对象实体类: 摩托车对象实体类 测试类: 测试类 总结:摩托车对象时一个大对象:构建过程中可能需要很多其他对象的使用,

设计模式学习总结(五)创建者模式(Builder)

创建者模式,主要针对某些产品有类似的生产步骤,且有需要有先后顺序的进行各个部件的生成. 一.示例展示: 通过学习及总结,以下是我完成的创建者模式的示例: 1.创建产品类:Laptop public class Laptop { ArrayList LaptopParts = new ArrayList(); public void AddParts(string PartName) { LaptopParts.Add(PartName); } public void ShowPartList()

设计模式-行为型模式-创建者模式

Introduce: 创建者模式属于创建型模式,其核心思想是将一个复杂对象的构建算法与它的构成部件.组装方式分离,使得构建算法和组装方式可以独立应对变化,那么部件可以被复用,组装方式可以适应不同的变化,不同的构建算法可以得到不一样的结果.创建者模式主要由5部分构成:Abstrct Builder, Concrete Builder, Abstract Product, Concrete Product and Director. 我们可以举个例子,盖房子.房子是Abstract Product,

设计模式05_创建者模式

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/46489147 创建者模式:将一个复杂对象的构建和其表示分离开来,使得同样的构建过程可以创建出不同的表示. 例如我们需要盖一栋楼房,需要工人来砌墙,需要设计师来设计房子怎么盖,而这里的设计师本身是不干活的,它只是负责下命令让工人干活就行,而真正的创建者是工人,他们最后把楼房盖起来的.所以,最后是向民工要房子而不是向设计师要房子.在这里,房主(客户端)只需要请