`
touchinsert
  • 浏览: 1333652 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

生成器模式(Builder)

阅读更多

把复杂的对象的构建与其表示分离开,以便根据程序的需要在相同的创建过程中创建不同的表示。每个生成器必须有一个相同的方法名称。

Client创建一个Director对象,指定一个build对象,配置Director

product需要生成时,Director通知该builderBuilder处理通知,创建product

ClientBuilder得到product

<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 6in; HEIGHT: 242.25pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.png" o:title=""></imagedata></shape>

BuilderVehicleBuilder

指定一个接口用来创建Product对象。

ConcreteBuilderMotoCycleBuildeCarBuilderScooterBuilder

实现Builder接口,创建product或组装product的部件。

提供返回product接口。

DirectorShop

使用Builder接口创建对象

ProductVehicle

需要被创建的复杂对象。

代码:

//Director

public class Shop{

public void Construct(VechicleBuilder vehicleBuilder){

vehicleBuilder.BuildFrame();

vehicleBuilder.BuildEngine();

vehicleBuilder.BuildWheels();

vehicleBuilder.BuildDoors();

}

}

//Builder

public abstract class VehicleBuilder{

//Fields

protected Vehicle vehicle;

//Properties

public Vehicle getVehicle{

return vehicle;

}

//methods

abstract public void BuildFrame();

abstract public void BuildEngine();

abstract public void BuildWheels();

abstract public void BuildDoors();

}

//ConcreteBuilder

public class MotorCycleBuilder extends VehicleBuilder{

public void BuildFrame(){

vehicle=new Vehicle(“MotoCycle”);

vehicle.setFrame(“MotorCycle Frame”);

}

public void BuildEngine(){

vehicle.setEngine(“500 cc”);

}

public void BuildWheels(){

vehicle.setWheels(“2”);

}

public void BuildDoors(){

vehicle.setDoors(“0”);

}

}

public class CarBuilder extends VehicleBuilder{

public void BuildFrame(){

vehicle=new Vehicle(“Car”);

vehicle.setFrame(“Car Frame”);

}

public void BuildEngine(){

vehicle.setEngine(“2500 cc”);

}

public void BuildWheels(){

vehicle.setWheels(“4”);

}

public void BuildDoors(){

vehicle.setDoors(“4”);

}

}

public class ScooterBuilder extends VehicleBuilder{

public void BuildFrame(){

vehicle=new Vehicle(“Scooter”);

vehicle.setFrame(“Scooter Frame”);

}

public void BuildEngine(){

vehicle.setEngine(“none”);

}

public void BuildWheels(){

vehicle.setWheels(“2”);

}

public void BuildDoors(){

vehicle.setDoors(“0”);

}

}

//Product

public class Vechicle{

private String type;

private String frame;

private String engine;

private String wheels;

private String doors;

public Vehicle(String type){

this.type=type;

}

public void setFrame(String frame){

this.frame=frame;

}

public void setEngine (String engine){

this.engine = engine;

}

public void setWheels (String wheels){

this.wheels = wheels;

}

public void setDoors (String doors){

this.doors= doors;

}

public void Show(){

System.out.println(“----------------------------“);

System.out.println(“Vechicle Type:” +this.type);

System.out.println(“Frame:”+this.frame);

System.out.println(“Engine:”+this.engine);

System.out.println(“#Wheels:”+this.wheels);

System.out.println(“#Doors:”+this.doors);

}

public class BuilderApp{

public static void main(String[] args){

Shop shop=new Shop();

VehicleBuilder b1=new ScooterBuilder();

VehicleBuilder b2=new CarBuilder();

VehicleBuilder b3=new MotorCycleBuilder();

shop.Construct(b1);

b1.getVehicle.Show();

shop.Construct(b2);

b2.getVehicle.Show();

shop.Construct(b3);

b3.getVehicle.Show();

Output

---------------------------
Vehicle Type: Scooter
Frame : Scooter Frame
Engine : none
#Wheels: 2
#Doors : 0

---------------------------
Vehicle Type: Car
Frame : Car Frame
Engine : 2500 cc
#Wheels: 4
#Doors : 4

---------------------------
Vehicle Type: MotorCycle
Frame : MotorCycle Frame
Engine : 500 cc
#Wheels: 2
#Doors : 0

分享到:
评论

相关推荐

    生成器模式builder

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

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

    生成器模式通常由四个主要角色组成:Director(导演)、Concrete Builder(具体生成器)、Product(产品)和Builder(生成器接口)。 在C#中,我们可以定义一个生成器接口,包含创建产品各个部分的方法,如`...

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

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

    生成器模式代码示例

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

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

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

    java生成器模式

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

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

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

    C#面向对象设计模式纵横谈(4):Builder 生成器模式(创建型模式)

    在C#中,Builder模式常常应用于游戏对象生成、配置文件解析、数据库记录映射等领域。例如,游戏中的角色创建,可能需要设置角色的属性、技能等,这些可以通过不同的Builder来实现;而在数据库操作中,ORM框架如...

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

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

    生成器模式源代码

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

    iOS 生成器模式demo

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

    生成器模式

    生成器模式是一种设计模式,属于创建型模式,它在软件工程中被广泛应用于解决大量对象的创建问题。这种模式的主要思想是将对象的创建过程分解为一系列步骤,使得客户端可以根据需要选择执行这些步骤,从而实现延迟...

    Builder(生成器)模式[文].pdf

    Builder模式是一种设计模式,主要目的是将复杂对象的构建与其表示分离,使得构建过程可以独立于表示进行。在Builder模式中,我们通常会定义一个抽象Builder类,它规定了如何创建复杂对象的各个部分,然后创建具体...

    生成器模式例子

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

    iOS 生成器模式

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

    Builder(生成器)模式参照.pdf

    Builder 模式(生成器模式) Builder 模式是一种创建型设计模式,它将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。GoF 将其定义为将一个复杂对象的构建与它的表示分离,使得同样的...

    Builder(生成器)模式借鉴.pdf

    Builder 模式(生成器模式) Builder 模式是一种创建型设计模式,它将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Builder 模式与 Abstract Factory 模式非常像,但是它们之间有着...

    C#视频-面向对象设计模式纵横谈(4):Builder 生成器模式(创建型模式)

    Builder模式是一种创建型设计模式,它提供了一种...在观看“C#视频-面向对象设计模式纵横谈(4):Builder 生成器模式(创建型模式)”的视频教程时,可以深入理解Builder模式的工作原理,学习如何在实际项目中有效应用。

    iOS设计模式-生成器

    生成器模式通常由四个组件构成:Director(导演)、ConcreteBuilder(具体生成器)、Product(产品)和Builder(构建者)。Director负责协调和指导构建过程,ConcreteBuilder实现了具体的构建步骤,并返回一个...

Global site tag (gtag.js) - Google Analytics