`

设计模式与动态语言之建造者模式 Builder

阅读更多
建造者模式是一种比较常用的简单的对象创建型设计模式。
它在软件系统中,主要用于面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。


意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。


结构:



适用性:
  • 需要生成的产品对象有复杂的内部结构。
  • 需要生成的产品对象的属性相互依赖,建造者模式可以强迫生成顺序。
  • 在对象创建过程中会使用到系统中的一些其它对象,这些对象在产品对象的创建过程中不易得到。


动态性:
此模式在动态性方面没有特别的动态特性。

效果:
建造者模式的使用使得产品的内部表象可以独立的变化。使用建造者模式可以使客户端不必知道产品内部组成的细节;
每一个Builder都相对独立,而与其它的Builder无关;
可使对构造过程更加精细控制;
建造者模式的缺点在于难于应付“分步骤构建算法”的需求变动。


下面是个小例子:


class Director
  def build(builder)
    [:header, :toolbar, :content, :footer].each do |m|
      builder.send("build_#{m}")
    end
  end
end

class BlueWindowBuilder
  def build_header
    BlueHeader.new
  end

  def build_toolbar
    BlueToolbar.new
  end

  def build_content
    BlueContent.new
  end

  def build_footer
    BlueFooter.new
  end
end

class BlueHeader
  def initialize
    @bg = 'Blue'
    @title = 'Blue window'
    puts "Build #{self.class.name}"
  end
end

class BlueToolbar
  def initialize
    @bg = 'light blue'
    @buttons_bg = 'blue'
    puts "Build #{self.class.name}"
  end
end

class BlueContent
  def initialize
    @bg = 'gray'
    puts "Build #{self.class.name}"
  end
end

class BlueFooter
  def initialize
    @font_color = 'white'
    puts "Build #{self.class.name}"
  end
end

class GrayWindowBuilder
  def build_header
    GrayHeader.new
  end

  def build_toolbar
    GrayToolbar.new
  end

  def build_content
    GrayContent.new
  end

  def build_footer
    GrayFooter.new
  end
end

class GrayHeader
  def initialize
    @bg = 'Gray'
    @title = 'Gray window'
    puts "Build #{self.class.name}"
  end
end

class GrayToolbar
  def initialize
    @bg = 'Black'
    @buttons_bg = 'gray'
    puts "Build #{self.class.name}"
  end
end

class GrayContent
  def initialize
    @bg = 'white'
    puts "Build #{self.class.name}"
  end
end

class GrayFooter
  def initialize
    @font_color = 'black'
    puts "Build #{self.class.name}"
  end
end

dir = Director.new
puts "\nBuilding blue window ...\n"
dir.build(BlueWindowBuilder.new)
puts "\nBuild Gray window ...\n"
dir.build(GrayWindowBuilder.new)


类图:




点击下载UML及源码
  • 大小: 9 KB
  • 大小: 52.7 KB
分享到:
评论

相关推荐

    设计模式之建造者Builder模式

    **建造者模式(Builder Pattern)**是软件设计模式中的一种,属于创建型模式。它将复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通常用于那些需要大量构造参数的对象,通过...

    C#设计模式之建造者(Builder)模式示例源代码

    在深入探讨C#设计模式中的建造者(Builder)模式之前,我们先来理解一下什么是设计模式。设计模式是在软件工程中解决常见问题的一种通用可重用解决方案,它们提供了一种标准化的方法来解决软件开发中遇到的挑战。...

    设计模式C++学习之建造者模式(Builder)

    建造者模式(Builder)是设计模式中的一种结构型模式,它允许我们分步骤构建复杂的对象,而无需暴露构造过程。这种模式将构造过程与对象的表示分离,使得同样的构造过程可以创建不同的表示。在C++中,建造者模式通常...

    设计模式之建造者模式代码示例

    建造者模式(Builder Pattern)是软件工程中一种用于创建对象的抽象工厂方法,它将复杂的构建过程分解为一系列步骤,使得构建过程可以独立于其表示进行。这种模式允许客户端使用相同的构建过程创建不同表现形式的...

    设计模式——建造者模式

    建造者模式是一种结构型设计模式,它允许我们分步骤创建复杂对象,而无需暴露构建过程的内部细节。这种模式在Java编程中非常常见,尤其是在处理需要多种构建方式或需要隔离对象构造过程的场景。 建造者模式的核心...

    设计模式 创建型模式 Builder模式(建造者)

    明确建造者(Builder)、具体建造者(Concrete Builder)、指导者(Director)、产品(Product)之间的职责和联系。 ◆建造者(Builder): 给出一个抽象接口,以规范产品对象的各个组成成分的建造。一般而言,...

    设计模式之建造者模式

    建造者模式是软件设计模式中的一种,属于创建型模式,它的主要目的是将复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。在Java的23种设计模式中,建造者模式是一个非常实用且重要的模式。 ...

    c++-设计模式之“建造者模式(Builder)”

    建造者模式(Builder Pattern)是一种创建型设计模式,允许使用多个简单的对象一步一步构建一个复杂的对象。它将对象的构建过程与表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式的组成 产品...

    [创建型模式]设计模式之建造者模式(Builder Pattern)

    【创建型模式】设计模式之建造者模式(Builder Pattern) 建造者模式(Builder Pattern)是设计模式中的一个创建型模式,它提供了一种方法来分步骤构造复杂的对象,使得构造过程和表示分离,使得同样的构建过程可以...

    设计模式之创建模式Builder

    建造者模式(Builder Pattern)是设计模式中的一种创建型模式,它允许我们分步骤构建复杂的对象,而无需暴露其构造过程。这种模式的核心思想在于将对象的构建与表示分离,使得构建过程和不同表示可以独立变化,提高...

    (设计模式)Builder

    【标题】"Builder 设计模式详解" Builder设计模式是一种创建型设计模式,它提供了一种方法来分步骤构造复杂的对象,使得构建过程和表示分离,允许用户只关注对象的构建而无需关心具体实现细节。在Java或其他编程...

    设计模式实验报告-建造者

    建造者模式是一种软件设计模式,属于创建型模式之一,主要用于解决创建复杂对象的问题。在实际应用中,当对象的构造过程过于复杂,涉及到多个属性或者子对象的组合时,直接通过构造函数创建可能会导致代码混乱、难以...

    Java设计模式-建造者模式详解

    Java设计模式-建造者模式详解将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。生成器模式(Builder)是使用多个“小型”工厂来最终创建出一个完整对象。当我们使用Builder的时候,...

    原创:设计模式之建造者模式生动实例

    建造者模式,是设计模式中的一种创建型模式,它的核心思想是将复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。在Java编程中,这种模式经常用于生成对象,特别是当对象的创建过程较为复杂时,...

    C#设计模式之建造者模式

    建造者模式是软件设计模式中的一种,主要用于将复杂的对象构建过程与对象的使用分离,使得同样的构建过程可以创建不同的表示。在C#中,我们可以通过类的继承和接口的使用来实现这一模式。以下是关于“C#设计模式之...

    69-Java设计模式之建造者 Builder1

    建造者模式(Builder Pattern)是Java设计模式中的一种,它属于创建型模式,主要用于构建复杂的对象。这种模式将对象的创建过程与表示分离,使得同样的创建过程可以创建不同的表示。在实际开发中,当我们需要创建的...

    设计模式-建造者模式

    建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种方法来分步骤构建复杂的对象,使得构建过程和表示分离,使得同样的构建过程可以创建不同的表示。这种模式经常在对象的构造过程中需要进行多种选择...

    builder设计模式源码

    Builder设计模式是一种软件设计模式,它允许我们分步骤构建复杂对象,通过将构造过程与对象的表示分离,使得相同的构造过程可以创建不同的表示。在Java或者其他面向对象编程语言中,Builder模式经常被用来提高代码的...

    Java 设计模式-建造者模式(Builder)Android讲解

    建造者模式(Builder)是Java设计模式中的一种创建型模式,它允许我们分步骤构建复杂的对象,而无需暴露其构造过程。在Android开发中,这种模式尤其有用,因为Android组件如Activity、Fragment等的初始化过程通常...

Global site tag (gtag.js) - Google Analytics