设计模式、用Delphi实现---->Builder模式

原创 2001年11月06日 17:43:00

 

 

Builder模式

起源

Delphi中的Builder模式在基本Builder模式进行了扩展。更多Builder模式的资料请参阅 [Gam+]<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

目的

将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

动机

一个生成器(Builder)与抽角工厂(Abstract Factory)从概念上来看有点类似。但不同的是,生成器将单一复杂的类的各个部件通过引用不同的构造器生成,然面抽象工厂则让你创建整个具体的类。比如说:一个建筑工可以构造房子、别墅、办公室。你可雇用不同的建筑工来构造砖房、木房。虽然你可指定房子的形状、大小。而其他肋手用来构造房子的部门、并非全部。比如构建窗了,门,停车场。

应用

 

下面的例子先引入了一个抽象类TabstractFormBuilder和它的两个具体子类TredFormBuilderTblueFormBuilderTabstractFormBuilder声明了一些类的构造器

 

type

  TAbstractFormBuilder = class

  private

    FForm: TForm;

    procedure BuilderFormClose(Sender: TObject; var Action: TCloseAction);

  protected

    function GetForm: TForm; virtual;

  public

    procedure CreateForm(AOwner: TComponent); virtual;

    procedure CreateSpeedButton; virtual; abstract;

    procedure CreateEdit; virtual; abstract;

    procedure CreateLabel; virtual; abstract;

    property Form: TForm read GetForm;

  end;

 

type

  TRedFormBuilder = class(TAbstractFormBuilder)

  private

    FNextLeft, FNextTop: Integer;

  public

    procedure CreateForm(AOwner: TComponent); override;

    procedure CreateSpeedButton; override;

    procedure CreateEdit; override;

    procedure CreateEdit; override;

  end;

 

type

  TBlueFormBuilder = class(TAbstractFormBuilder)

  private

    FNextLeft, FNextTop: Integer;

  public

    procedure CreateForm(AOwner: TComponent); override;

    procedure CreateSpeedButton; override;

    procedure CreateEdit; override;

    procedure CreateLabel; override;

  end;

有上面的接口中:

·      声明了一个创建抽象产品对象的接口:TAbstractFormBuilder

¨    TAbstractFormBuilder有三个抽象的工厂方法CreateFormCreateSpeedButtonCreateEditCreateEdit

·      TBlueFormBuilderTRedFormBuilder用来实现创建具体产品对象的方法

 

 

运行的时候,客户程序调用一个具体类的公共构造器来创建它某一些部分,具体的构造器实例的调用方法如下:

 

 

procedure TForm1.Create3ComponentFormUsingBuilder(ABuilder: TAbstractFormBuilder);

var

  NewForm: TForm;

begin

  with ABuilder do begin

    CreateForm(Application);

    CreateEdit;

    CreateSpeedButton;

    CreateLabel;

    NewForm := Form;

    if NewForm <> nil then NewForm.Show;

  end;

end;

delphi版大话设计模式

前段时间听到一个小家伙说, 只听过JAVA. C#有设计模式, DELPHI应该没有吧, 我听了窃笑,  但又不好明说,  一来,  用delphi的人现在本来就很少了,   以前做delphi的年龄...
  • x34205
  • x34205
  • 2013年09月29日 22:42
  • 739

Delphi五种设计模式

今天抽空浏览了一下Delphi写的设计模式,网页在如下位置:http://www.delphi-jedi.org/art_patterns.html今天再看。仍然有种感觉。我把Observer模式的代...
  • penker_zhao
  • penker_zhao
  • 2010年08月06日 15:10
  • 931

Delphi设计模式之单例模式(Singleton Pattern)

   SingletonPattern模式的设计意图是:保证一个类仅有一个实例,并提供一个访问他的全局访问点。有人已经实现了这个模式,详见代码如下:interfaceuses classes,SysU...
  • SmallHand
  • SmallHand
  • 2008年12月24日 08:40
  • 4257

Delphi代码设计模式-设计模式入门

  • 2011年05月06日 11:45
  • 2.36MB
  • 下载

Delphi设计模式 中文版

  • 2008年08月26日 10:54
  • 2.4MB
  • 下载

设计模式学习之Builder模式

建造者模式(Builder Pattern),是创造性模式之一,Builder 模式的目的则是为了将对象的构建与展示分离。Builder 模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道...
  • hjxgood
  • hjxgood
  • 2017年04月21日 15:09
  • 507

【java设计模式】之 建造者(Builder)模式

我们还是举上一节的例子:生产汽车。上一节我们通过模板方法模式控制汽车跑起来的动作,那么需求是无止境的,现在如果老板又增加了额外的需求:汽车启动、停止、鸣笛引擎声都由客户自己控制,他想要什么顺序就什么顺...
  • eson_15
  • eson_15
  • 2016年05月06日 08:59
  • 5039

设计模式之四 --- 建造(Builder)模式

【1】基本概念            建造(Builder)模式是一种对象构建的设计模式,它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象...
  • cjjky
  • cjjky
  • 2012年03月07日 01:01
  • 16983

builder设计模式的使用以及优缺点

嗯,大家是否在开发过程中,经常遇到一个类拥有许多的属性呢。为了使这个类的使用便捷,我们通常情况下会给这个类多个构造器以及一个默认的无参数构造器。 但是当参数的个数达到四个或者更多的时候,你是否会经常...
  • u010469003
  • u010469003
  • 2014年04月03日 15:16
  • 1824

Kotlin设计模式 - 建造者模式( Builder 模式)

Builder 模式 将复杂对象的构造与其表示分开,以便相同的构造过程可以创建不同形式的对象 Builder 模式很好用,可以避免臃肿的构造函数参数列表,还能方便地复用预先定义好的配置对象的代码。...
  • qq_30889373
  • qq_30889373
  • 2017年06月30日 15:48
  • 551
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式、用Delphi实现---->Builder模式
举报原因:
原因补充:

(最多只允许输入30个字)