今天图老师小编给大家精心推荐个DesignPattern之SimpleFactory教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~
【 tulaoshi.com - 编程语言 】
unit Unit2;
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)interface
  uses
    Windows, Messages, SysUtils, Variants, Classes, Controls,
    Dialogs, ExtCtrls, ShellAPI, AppEvnts, Forms;
  type
    IFruitInterface = interface
      ['{D4557157-5241-4116-AA1E-87F86A884EA9}']
      procedure grow();
      procedure harvest();
      procedure plant();
    end;
  type
    TApple = class(TComponent, IFruitInterface)
    private
      treeAge: Integer;
    public
      procedure grow();
      procedure harvest();
      procedure plant();
    end;
    TStrwaBerry = class(TComponent, IFruitInterface)
    private
      treeAge: Integer;
    public
      procedure grow();
      procedure harvest();
      procedure plant();
    end;
    TGrape = class(TComponent, IFruitInterface)
    private
      treeAge: Integer;
    public
      procedure grow();
      procedure harvest();
      procedure plant();
    end;
    TFruitGarden = class
    public
      class function GetFruit(const strFruit: string): IFruitInterface;
    end;
  implementation
  //{$R *.dfm}
  procedure TApple.grow();
  begin
    showmessage('Apple grow');
  end;
  procedure TApple.harvest();
  begin
    showmessage('Apple harvest');
  end;
  procedure TApple.plant();
  begin
    showmessage('Apple plant');
  end;
  procedure TStrwaBerry.grow();
  begin
    showmessage('StrwaBerry plant');
  end;
  procedure TStrwaBerry.harvest();
  begin
    showmessage('StrwaBerry plant');
  end;
  procedure TStrwaBerry.plant();
  begin
    showmessage('StrwaBerry plant');
  end;
  procedure TGrape.grow();
  begin
    showmessage('Grape plant');
  end;
  procedure TGrape.harvest();
  begin
    showmessage('Grape plant');
  end;
  procedure TGrape.plant();
  begin
    showmessage('Grape plant');
  end;
  class function TFruitGarden.GetFruit(const strFruit: string): IFruitInterface;
  begin
    if strFruit = 'Apple' then
      Result := TApple.create(nil)
    else if strFruit = 'StrawBerry' then
      Result := TStrwaBerry.create(nil)
    else if strFruit = 'Grape' then
      Result := TGrape.create(nil)
    else
      raise Exception.Create('Cannot create ' + strFruit);
  end;
  end.
  
//test
    AFruitGarden: TFruitGarden;
    AFruit: IFruitInterface;
  begin
    AFruitGarden := TFruitGarden.Create();
    try
      AFruit := AFruitGarden.GetFruit(Edit1.Text);
      AFruit.grow();
    except on FruitError: Exception do
        ShowMessage(FruitError.Message);
    end;
    FreeAndNil(AFruitGarden);
  end;
  
来源:http://www.tulaoshi.com/n/20160219/1621341.html
看过《DesignPattern之SimpleFactory》的人还看了以下文章 更多>>