Delphi 工厂模式

RAD Studio 10.2.3 测试√


运行结果:

在这里插入图片描述


使用方法:

procedure TDesignPattern.Button_FactoryPatternClick(Sender: TObject);
var
  mBigBoss: TBigBoss;
  mFactory: IFactoryMgr;
begin
  mBigBoss := TBigBoss.Create;
  mFactory := mBigBoss.GetFactory('小米手机');
  mFactory.Make;
  mFactory := mBigBoss.GetFactory('小米电脑');
  mFactory.Make;
  mFactory := mBigBoss.GetFactory('华为手机');
  mFactory.Make;
  mFactory := mBigBoss.GetFactory('华为电脑');
  mFactory.Make;
  mFactory := mBigBoss.GetFactory('苹果手机');

  mBigBoss.Free;
end;

工厂模式单元:

unit uFactoryPattern;

{------------------------------------------------------------------------------}
{  单元描述: 工厂模式                                                          }
{  单元作者: XiaoYin                                                           }
{  创建时间: 2021-11-08                                                        }
{  描    述: 我目前理解的工厂模式,欢迎各位大佬对我指指点点,我会加以改正      }
{                                                                              }
{            工厂就是制造物品的地方,可以有制造手机工厂、制造电脑的工厂,其中  }
{            还可以分为制造不同品牌的手机或者电脑,然后就需要一个大老板进行对  }
{            接,让需要工厂帮忙生产的手机公司可以找到工厂生产,需要订单的工厂  }
{            能够有订单可生产,其中关键的就是这个大老板,统一进行分配。        }
{  总    结: 工厂模式就是工厂目前已经存在的就那些,如果想要新的工厂可以再建,  }
{            需要工厂的一方,找到大老板问有没有我可以加工我的产品的工厂,然后  }
{            大老板对需求者提供的信息去查找,如果有就告诉你这个工厂的信息,这  }
{            双方就有了联系,完成各自所需。                                    }
{------------------------------------------------------------------------------}

interface

type
  // 这是工厂的管理者,是大老板的员工
  IFactoryMgr = interface
  ['{EB02758A-3884-4179-8052-12EA8A205E61}']   // 可以 Ctrl + Shift + G 生成GUID
  procedure Make;
  end;

  // 这是工厂01,其归属 IFactoryMgr 所管理
  TFactory_01 = class(TInterfacedObject, IFactoryMgr)
  public
    procedure Make;
  end;

  // 这是工厂02,其归属 IFactoryMgr 所管理
  TFactory_02 = class(TInterfacedObject, IFactoryMgr)
  public
    procedure Make;
  end;

  // 这是工厂03,其归属 IFactoryMgr 所管理
  TFactory_03 = class(TInterfacedObject, IFactoryMgr)
  public
    procedure Make;
  end;

  // 这是工厂04,其归属 IFactoryMgr 所管理
  TFactory_04 = class(TInterfacedObject, IFactoryMgr)
  public
    procedure Make;
  end;

  TBigBoss = class
  public
    constructor Create;
    destructor Destroy; override;
    function GetFactory(AFactoryName: string): IFactoryMgr;
  end;

implementation

uses
  uFrmDesignPattern;

procedure NotifyMsg(AMsgStr: string);
begin
  DesignPattern.Memo_Log.Lines.Add(AMsgStr);
end;

{ TFactory_01 }

procedure TFactory_01.Make;
begin
  NotifyMsg('工厂01 生产小米手机');
end;

{ TFactory_02 }

procedure TFactory_02.Make;
begin
  NotifyMsg('工厂02 生产华为手机');
end;

{ TFactory_03 }

procedure TFactory_03.Make;
begin
  NotifyMsg('工厂03 生产小米电脑');
end;

{ TFactory_04 }

procedure TFactory_04.Make;
begin
  NotifyMsg('工厂04 生产华为电脑');
end;

{ TBigBoss }

constructor TBigBoss.Create;
begin

end;

destructor TBigBoss.Destroy;
begin

  inherited;
end;

function TBigBoss.GetFactory(AFactoryName: string): IFactoryMgr;
begin
  Result := nil;
  if AFactoryName = '小米手机' then
  begin
    Result := TFactory_01.Create;
  end
  else
  if AFactoryName = '华为手机' then
  begin
    Result := TFactory_02.Create;
  end
  else
  if AFactoryName = '小米电脑' then
  begin
    Result := TFactory_03.Create;
  end
  else
  if AFactoryName = '华为电脑' then
  begin
    Result := TFactory_04.Create;
  end
  else
  begin
    NotifyMsg('抱歉没有你想要的工厂');
  end;
end;

end.


一点点笔记,以便以后翻阅。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小印丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值