`
三里小龙
  • 浏览: 87866 次
  • 性别: Icon_minigender_1
  • 来自: 孝感
社区版块
存档分类
最新评论

生成器模式

阅读更多

它是一种对象构建模式,它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。

 

(1)创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式;
(2)构造过程必须允许被构造的对象有不同的表示。

 

 

package org.fanzone.pattern.builder;


/** 

 * Title: base<br> 

 * Description: Final Product<br> 

 * Copyright: Copyright (c) 2011 <br> 

 * Create DateTime: Jul 6, 2011 8:10:55 PM <br> 

 * @author wangmeng

 */

public class Person {


@SuppressWarnings("unused")

private String looks;

@SuppressWarnings("unused")

private String figure;

@SuppressWarnings("unused")

private String sex;

public void setLooks(String looks){

this.looks  = looks;

}

public void setFigure(String figure){

this.figure = figure;

}

public void setSex(String sex){

this.sex = sex;

}

public String getLooks(){

return this.looks;

}

public String getFigure(){

return this.figure;

}

public String getSex(){

return this.sex;

}

}


---------------------------------------------------------------------

package org.mars.pattern.builder;

/** 
 * Title: base<br> 
 * Description: Abstract Builder<br> 
 * Copyright: Copyright (c) 2011 <br> 
 * Create DateTime: Jul 6, 2011 8:28:07 PM <br> 
 * @author wangmeng
 */
public abstract class PersonBuilder {
protected Person person;
public Person getPerson(){
return this.person;
}
public void buildPerson(){
person = new Person();
}
public abstract void buildLooks();
public abstract void buildFigure();
public abstract void buildSex();
}

-------------------------------------------------------

package org.mars.pattern.builder;

/** 
 * Title: base<br> 
 * Description: Concrete Builder<br> 
 * Copyright: Copyright (c) 2011 <br> 
 * Create DateTime: Jul 6, 2011 8:43:04 PM <br> 
 * @author wangmeng
 */
public class FrogPrinceBuilder extends PersonBuilder{

@Override
public void buildFigure() {
this.person.setFigure("strong");
}

@Override
public void buildLooks() {
this.person.setLooks("handsome");
}

@Override
public void buildSex() {
this.person.setSex("male");
}

}

------------------------------------------------------

package org.mars.pattern.builder;

/** 
 * Title: base<br> 
 * Description: Concrete Builder<br> 
 * Copyright: Copyright (c) 2011 <br> 
 * Create DateTime: Jul 6, 2011 8:42:04 PM <br> 
 * @author wangmeng
 */
public class SnowWhiteBuilder extends PersonBuilder{

@Override
public void buildFigure() {
this.person.setFigure("slim");
}

@Override
public void buildLooks() {
this.person.setLooks("pretty");
}

@Override
public void buildSex() {
this.person.setSex("female");
}

}

---------------------------------------------------------

package org.mars.pattern.builder;

/** 
 * Title: base<br> 
 * Description: Director<br> 
 * Copyright: Copyright (c) 2011 <br> 
 * Create DateTime: Jul 6, 2011 8:54:02 PM <br> 
 * @author wangmeng
 */
public class NuWa {

private PersonBuilder personBuilder;
public void setPersonBuilder(PersonBuilder personBuilder){
this.personBuilder = personBuilder;
}
public Person getPerson(){
return personBuilder.getPerson();
}
public void constructPerson(){
personBuilder.buildPerson();
personBuilder.buildLooks();
personBuilder.buildFigure();
personBuilder.buildSex();
}
}

---------------------------------------------------------

package org.mars.pattern.builder;

/** 
 * Title: base<br> 
 * Description: Just for a test.<br> 
 * Copyright: Copyright (c) 2011 <br> 
 * Create DateTime: Jul 6, 2011 8:58:53 PM <br> 
 * @author wangmeng
 */
public class Commission {

public static void main(String[] args){
NuWa nuWa = new NuWa();
FrogPrinceBuilder frogPrinceBuilder = new FrogPrinceBuilder();
SnowWhiteBuilder snowWhiteBuilder = new SnowWhiteBuilder();
/**
* Build the specified product.
*/
nuWa.setPersonBuilder(frogPrinceBuilder);
nuWa.constructPerson();
Person person = nuWa.getPerson();
System.out.println("Frog Prince: I am a " + person.getSex() + " who looks " + person.getLooks() + " and " + person.getFigure() + ".");

nuWa.setPersonBuilder(snowWhiteBuilder);
nuWa.constructPerson();
person = nuWa.getPerson();
System.out.println("Snow White: I am a " + person.getSex() + " who looks " + person.getLooks() + " and " + person.getFigure() + ".");
}
}

 

 

0
4
分享到:
评论

相关推荐

    23钟设计模式之生成器模式

    生成器模式 生成器模式(Builder Pattern)是一种创造型设计模式,它将一个复杂对象的构建与它的表示分离,使得同样的构建可以创建不同的表示。这种模式可以在以下情况下使用: 1. 当创建复杂对象的算法应该独立于...

    生成器模式代码示例

    生成器模式是一种设计模式,属于创建型模式,它允许我们分步骤构建复杂对象,而无需提前知道整个对象的完整结构。这种模式的核心在于延迟初始化,它使得我们可以根据需要逐步构建对象,而不是一次性创建所有部分。在...

    java生成器模式

    生成器模式(Builder Pattern)是Java设计模式中的创建型模式之一,主要解决复杂对象的构建问题,通过将构造过程逐步分解,使得构造过程与表示分离,使得同样的构建过程可以创建不同的表示。这种模式通常用于创建...

    生成器模式源代码

    生成器模式,也被称为构建器模式,是一种软件设计模式,主要用在对象的创建过程中,它将复杂的构建过程分解为一系列简单的步骤,使得构建过程可配置,并且可以独立于对象的表示进行。在C#中,生成器模式的实现通常...

    使用生成器模式模拟实现IBM电脑的生产

    使用生成器模式模拟实现IBM电脑的生产,其中IBM电脑的主要结构用如下表示: class IBM{  string monitor=”IBM的显示器”;  string keyboard=”IBM的键盘”;  string mouse=”IBM的鼠标”;  Motherboard* MB;  ...

    生成器模式例子

    在《Head First Design Patterns》文中是这么介绍生成器模式的,“封装一个产品的构造过程,并允许按步骤构造”,感觉说得不是很清楚。而在网上查找相关资料是这么解释的,建造者模式(Builder Pattern)使用多个简单...

    生成器模式builder

    生成器模式(Builder Pattern)是一种设计模式,它允许我们分步骤构建复杂对象,而无需暴露其构造过程。这种模式在创建对象时提供了更大的灵活性,特别是当构造过程需要多个步骤或者对象有不同的构造方式时。Builder...

    iOS 生成器模式demo

    在iOS开发中,生成器模式(Builder Pattern)是一种设计模式,它允许我们分步骤构建复杂的对象,而无需暴露创建过程的复杂性。这种模式在处理需要多种构建方式或需要逐步构造对象的情况时特别有用。标题“iOS 生成器...

    C#设计模式之Builder生成器模式解决带老婆配置电脑问题实例

    本文主要介绍了C#设计模式之Builder生成器模式解决带老婆配置电脑问题,简单介绍了生成器模式的概念、功能并结合具体实例形式分析了C#生成器模式解决配电脑问题的步骤与相关操作技巧。 一、 Builder生成器模式定义 ...

    iOS 生成器模式

    生成器模式是设计模式中的一种,它属于创建型模式,主要用来处理复杂对象的构建过程。在这个“iOS生成器模式”中,我们将深入探讨如何在iOS开发中应用这个模式。 生成器模式的核心思想是将对象的创建过程和对象本身...

    【设计模式】- 生成器模式(Builder)(csdn)————程序.pdf

    生成器模式,也称为建造者模式,是一种设计模式,用于创建复杂对象,它允许你按照一系列步骤来构造对象,而这些步骤可以通过不同的实现来产生不同形式的对象。生成器模式的核心在于分离了对象的构造过程和表示细节,...

    3 生成器模式.txt

    3 生成器模式.txt

    23种设计模式(4) java生成器模式

    Java 生成器模式详解 在软件开发中,经常需要创建复杂对象,而这些对象的创建过程往往涉及多个步骤和组件。为了解决这种问题,设计模式中引入了生成器模式(Builder Pattern)。生成器模式是一种创建型模式,它将...

    C#面向对象设计模式纵横谈\4 创建型模式Builder生成器模式.zip

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第4节:创建型模式Builder生成器模式

    JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析

    在众多的设计模式中,构造器模式(也称为生成器模式)是实现面向对象编程的一种基本方式。在构造器模式中,构造函数用于创建特定的对象,每个新创建的实例都继承构造函数的属性和方法。 构造器模式的核心概念是利用...

    C#面向对象设计模式4:生成器(Builder)

    生成器模式是一种创建型设计模式,它允许我们分步骤构建复杂对象,同时隐藏了对象组装的细节。这种模式的核心思想是将产品的构造过程与产品本身分离,使构造过程可以有不同的表示方式。生成器模式通常由四个主要角色...

    iOS设计模式-生成器

    通过这种方式,生成器模式允许我们分离产品的构造和表示,提供了更灵活的构造过程。 首先,让我们深入理解生成器模式的核心概念。生成器模式通常由四个组件构成:Director(导演)、ConcreteBuilder(具体生成器)...

Global site tag (gtag.js) - Google Analytics