`

Builder(生成器)---- 对象创建型模式

 
阅读更多
1、意图
   将一个复杂对象的创建和它的表示分离,使得同样的创建过程可以创建不同的表示
2、实用性
   1)当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
   2)当构造过程必须允许被构造的对象有不同的表示时。
3、结构


4、参与者
Builder
---为创建一个Product对象的各个部件指定抽象接口
ConcreteBuilder
---实现Builder的接口以构造和装配该产品的各个部件。
---定义并明确它所创建的表示
---提供一个检索产品的接口
Director
---构造一个使用Builder接口的对象。
Product
---表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。
---包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
5、代码实现
   
/** "Product" */
 class Pizza {
    private String dough = "";
    private String sauce = "";
    private String topping = "";
 
 
    public void setDough(String dough)     { this.dough = dough; }
    public void setSauce(String sauce)     { this.sauce = sauce; }
    public void setTopping(String topping) { this.topping = topping; }
 }
 
 
 /** "Abstract Builder" */
 abstract class PizzaBuilder {
    protected Pizza pizza;
 
    public Pizza getPizza() { return pizza; }
    public void createNewPizzaProduct() { pizza = new Pizza(); }
 
    public abstract void buildDough();
    public abstract void buildSauce();
    public abstract void buildTopping();
 }
 
 /** "ConcreteBuilder" */
 class HawaiianPizzaBuilder extends PizzaBuilder {
    public void buildDough()   { pizza.setDough("cross"); }
    public void buildSauce()   { pizza.setSauce("mild"); }
    public void buildTopping() { pizza.setTopping("ham+pineapple"); }
 }
 
 /** "ConcreteBuilder" */
 class SpicyPizzaBuilder extends PizzaBuilder {
    public void buildDough()   { pizza.setDough("pan baked"); }
    public void buildSauce()   { pizza.setSauce("hot"); }
    public void buildTopping() { pizza.setTopping("pepperoni+salami"); }
 }
 
 
 /** "Director" */
 class Waiter {
    private PizzaBuilder pizzaBuilder;
 
    public void setPizzaBuilder(PizzaBuilder pb) { pizzaBuilder = pb; }
    public Pizza getPizza() { return pizzaBuilder.getPizza(); }
 
    public void constructPizza() {
       pizzaBuilder.createNewPizzaProduct();
       pizzaBuilder.buildDough();
       pizzaBuilder.buildSauce();
       pizzaBuilder.buildTopping();
    }
 }
 
 
 /** A customer ordering a pizza. */
 class BuilderExample {
    public static void main(String[] args) {
        Waiter waiter = new Waiter();
        PizzaBuilder hawaiianPizzaBuilder = new HawaiianPizzaBuilder();
        PizzaBuilder spicyPizzaBuilder = new SpicyPizzaBuilder();
 
        waiter.setPizzaBuilder( hawaiianPizzaBuilder );
        waiter.constructPizza();
 
        Pizza pizza = waiter.getPizza();
    }
 }  
  • 大小: 22.5 KB
分享到:
评论

相关推荐

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

    Builder模式是一种创建型设计模式,它提供了一种创建对象的抽象接口,并允许使用不同的实现来控制对象的构造过程。在C#中,Builder模式经常被用于复杂对象的构建,特别是当构建过程需要多个步骤或者需要在不同环境中...

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

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

    生成器模式builder

    Builder模式属于创建型设计模式,它的核心思想是将对象的创建过程与对象本身分离,使得同样的构建过程可以创建不同的表示。 在Java或其他面向对象语言中,生成器模式通常包括四个主要角色:产品(Product)、建造者...

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

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

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

    Builder模式是一种创建型设计模式,它提供了一种创建对象的抽象接口,并允许使用不同的实现来创建复杂的对象。在C#中,Builder模式可以帮助我们在不暴露复杂构造过程的情况下,创建具有多种构建步骤的对象。这种模式...

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

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

    生成器模式代码示例

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

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

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

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

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

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

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

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

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

    java生成器模式

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

    生成器模式源代码

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

    生成器模式

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

    C#面向对象设计模式纵横谈(视频与源码)

    C#面向对象设计模式纵横谈(4):Builder 生成器模式(创建型模式) C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式) C#面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式) C#面向...

    生成器模式例子

    在《Head First Design Patterns》文中是这么介绍生成器模式的,“封装一个产品的构造过程,并允许按步骤构造”,感觉说得不是很清楚。而在网上查找相关资料是这么解释的,建造者...这种类型的设计模式属于创建型模式。

    设计模式可复用面向对象软件的基础.zip

    对象创建型模式 57 3.2 Builder(生成器)—对象创建型 模式 63 3.3 Factory Method(工厂方法)— 对象创建型模式 70 3.4 Prototype(原型)—对象创建型 模式 87 3.5 Singleton(单件)—对象创建型 模式 84 3.6 ...

    iOS 生成器模式

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

    设计模式之创建型模式

    本次代码只提供了创建型模式的应用代码和说明,包括:Singleton 单件,Abstract Factory 抽象工厂,Builder 生成器,Factory Method 工厂方法。 Singleton模式解决的是实体对象个数的问题。除了Singleton...

Global site tag (gtag.js) - Google Analytics