抽象产品:如抽象类水果(Fruit)。

具体产品:如从Fruit继承下来的苹果、葡萄等。

工厂:负责生产各种水果。

unit FactoryMethodUnit;

interface
type
  TFruitID = (Grape,Apple);
  TFruit = class //抽象接口
  public
    constructor Create; virtual;
  end;
  TGrape= class(Fruit)//具体类
    constructor Create; override;
  end;
  TApple= class(Fruit)//具体类
    constructor Create; override;
  end;

TCreator = class  //工厂
  public
    constructor Create; virtual;
    function CreateProduct(FruitID : TFruitID): TFruit; virtual; 
  end;

TMyCreator = class(TCreator)
    constructor Create; override;
   function CreateProduct(FruitID : TFruitID): TFruit; override; //
  end;

implementation

function TCreator.CreateProduct(FruitID : TFruitID ): TFruit;
var
  aProduct: TFruit;
begin
  aProduct := nil;
  if FruitID = Grape then
    aProduct := TGrape.Create;
  if FruitID = Apple then
    aProduct := TApple.Create;
  Result := aProduct;
end;

constructor TGrape.Create;
begin
//......
end;

constructor TApple.Create;
begin
//......
end;

constructor TCreator.Create;
begin
//......
end;

constructor TMyCreator.Create;
begin
//......
end;

function TMyCreator.CreateProduct(FruitID : TFruitID ): TFruit;
var
  aProduct: TFruit;
  aCreator: TCreator;
begin

aProduct := nil;
  if FruitID = Grape then
    aProduct := TGrape.Create;
  if FruitID = Apple then
    aProduct := TApple.Create;

if aProduct = nil then
  begin
    aCreator := Tcreator.Create;
    aProduct := aCreator.CreateProduct(FruitID);
  end;
  Result := aProduct;
end;

end.

在简单工厂模式中,一个工厂类处于对产品类实例化的中心位置上,它知道每一个产
品,它决定哪一个产品类应当被实例化。这个模式的优点是允许客户端相对独立于产品创
建的过程,并且在系统引入新产品的时候无需修改客户端,也就是说,它在某种程度上支
持“开-闭”原则。这个模式的缺点是对“开-闭”原则的支持不够,因为如果有新的产品加入到系统中去,就需要修改工厂类,将必要的逻辑加入到工厂类中。

一、简单工厂模式(simple factory method)相关推荐

  1. Java设计模式之简单工厂模式(Simple Factory)

    [Java与模式]简单工厂模式(Simple Factory---吴义) 首先说明,Java与模式一系列的文章均是参考阎宏博士的<Java与模式>一书,加上自身的一些体会的探索,产生如下文 ...

  2. Net设计模式之简单工厂模式(Simple Factory Pattern)

    一.简单工厂模式简介(Bref Introduction)        简单工厂模式(Simple Factory Pattern)的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实 ...

  3. 简单工厂模式-Simple Factory Pattern 工厂三兄弟之简单工厂模式(四):图表库解决方案的改进,简单工厂模式的简化,简单工厂模式总结

    4 方案的改进 Sunny软件公司开发人员发现在创建具体Chart对象时,每更换一个Chart对象都需要修改客户端代码中静态工厂方法的参数,客户端代码将要重新编译,这对于客户端而言,违反了" ...

  4. 设计模式的征途—2.简单工厂(Simple Factory)模式

    工厂模式是最常用的一种创建型模式,通常所说的工厂模式一般是指工厂方法模式.本篇是是工厂方法模式的"小弟",我们可以将其理解为工厂方法模式的预备知识,它不属于GoF 23种设计模式, ...

  5. 简单工厂(Simple Factory)模式

    简单工厂(Simple Factory)模式 Simple Factory模式根据提供给它的数据,返回几个可能类中的一个类的实例.通常它返回的类都有一个公共的父类和公共的方法. Simple Fact ...

  6. 设计模式(2)——创建型——工厂相关:简单工厂(Simple factory),工厂方法(Factory method),抽象工厂(Abstract factory)

    概要 这里试图描述23个设计模式中的两个工厂(Factory)相关的设计模式:工厂方法(Factorymethod),抽象工厂(Abstract factory). 注意点: 这两个都属于创建型设计模 ...

  7. PHP框架中的设计模式-工厂模式(简单工厂)|Simple Factory Pattern-ThinkPHP v3.2

    一. ThinkPHP简单工厂模式应用~之~根据数据库连接配置参数设定相应的数据库驱动类? 比如说当数据库类型'DB_TYPE'配置为'mysql',则ThinkPHP会自动建立MySQL的数据库连接 ...

  8. 设计模式之简单工厂模式(Simply Factory)摘录

    从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种 ...

  9. 简单工厂模式(Simple Factory)

    简单工厂模式(Simple Factory) UML类图示法 矩形框三层: 第一层:类的名称,若为抽象类,斜体显示 第二层:类的特性,通常是字段和属性 第三层:类的操作,通常是方法或行为 符号:'+' ...

  10. c++设计模式之简单工厂模式

    模拟场景 要求使用简单工厂模式设计一个可以创建不同几何形状(如矩形.圆形.三角形)的绘图工具,每个几何图形都具有绘制Draw()和擦除Erase()两个方法: UML类图 分析需求: 首先这个绘图工具 ...

最新文章

  1. [Django]APP级别的静态文件处理
  2. 计算机教案制作电子表格,人教版七年级信息技术上册《制作电子表格》教案
  3. layer.tips定义弹出的宽度
  4. 使用PowerDesigner设计物理模型并运行脚本检查模型图解
  5. java 之选择排序与冒号排序的详解
  6. 操作系统【连续式分配方式、隐式链接、显示链接、索引方式、混合索引、位示图、成组链接】
  7. Java 程序优化:字符串操作、基本运算方法等优化策略
  8. 微软的焦虑?想多了!从.NET6 Preview2到大厂招聘,起飞
  9. PHP逐行解析文件,并写入数据库
  10. 32 位和 64 位版本的 Office 2010 之间的兼容性
  11. 老徐最近翻译的Mercury“最佳功能测试实践”-第一部分
  12. 电脑清理(C盘清理,卸载软件以及注册表清理)
  13. Maya_to_Unity工作流程
  14. 在win7 上安装 Visual Studio 2019 步骤 及 vs2019离线安装包
  15. html怎么打出一个圆点,如何打出两个字中间的圆点
  16. 有哪些可助力英文学术论文写作的在线网站、工具或软件?
  17. Document-Level Relation Extraction with Adaptive Thresholding and Localized Context Pooling 阅读笔记
  18. 避暑山庄消失的三十六景,曾经那么美!
  19. 【idea】如何设置默认的JDK
  20. ESP8266+micropython+HCSR04 超声波测距传感器

热门文章

  1. python开发对电脑要求高吗_学python对电脑配置有要求么
  2. java中transient关键字使用学习
  3. 【安卓开发】android studio 学习入门篇
  4. 最强docker部署模板
  5. 色调映射(Tone Mapping)
  6. [PPT]用PPT来做2019苹果发布会演示文稿【附源文件下载】
  7. webcam实现拍照
  8. 多年亿级流量下的高并发经验总结,我毫无保留的写在了这本书中(CSDN创始人、总裁、副总裁联合推荐)
  9. 怎么对网站进行外部优化
  10. 【SVN迁移】SVN迁移服务器代码,包含全部提交日志