一、简单工厂模式(simple factory method)
抽象产品:如抽象类水果(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)相关推荐
- Java设计模式之简单工厂模式(Simple Factory)
[Java与模式]简单工厂模式(Simple Factory---吴义) 首先说明,Java与模式一系列的文章均是参考阎宏博士的<Java与模式>一书,加上自身的一些体会的探索,产生如下文 ...
- Net设计模式之简单工厂模式(Simple Factory Pattern)
一.简单工厂模式简介(Bref Introduction) 简单工厂模式(Simple Factory Pattern)的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实 ...
- 简单工厂模式-Simple Factory Pattern 工厂三兄弟之简单工厂模式(四):图表库解决方案的改进,简单工厂模式的简化,简单工厂模式总结
4 方案的改进 Sunny软件公司开发人员发现在创建具体Chart对象时,每更换一个Chart对象都需要修改客户端代码中静态工厂方法的参数,客户端代码将要重新编译,这对于客户端而言,违反了" ...
- 设计模式的征途—2.简单工厂(Simple Factory)模式
工厂模式是最常用的一种创建型模式,通常所说的工厂模式一般是指工厂方法模式.本篇是是工厂方法模式的"小弟",我们可以将其理解为工厂方法模式的预备知识,它不属于GoF 23种设计模式, ...
- 简单工厂(Simple Factory)模式
简单工厂(Simple Factory)模式 Simple Factory模式根据提供给它的数据,返回几个可能类中的一个类的实例.通常它返回的类都有一个公共的父类和公共的方法. Simple Fact ...
- 设计模式(2)——创建型——工厂相关:简单工厂(Simple factory),工厂方法(Factory method),抽象工厂(Abstract factory)
概要 这里试图描述23个设计模式中的两个工厂(Factory)相关的设计模式:工厂方法(Factorymethod),抽象工厂(Abstract factory). 注意点: 这两个都属于创建型设计模 ...
- PHP框架中的设计模式-工厂模式(简单工厂)|Simple Factory Pattern-ThinkPHP v3.2
一. ThinkPHP简单工厂模式应用~之~根据数据库连接配置参数设定相应的数据库驱动类? 比如说当数据库类型'DB_TYPE'配置为'mysql',则ThinkPHP会自动建立MySQL的数据库连接 ...
- 设计模式之简单工厂模式(Simply Factory)摘录
从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种 ...
- 简单工厂模式(Simple Factory)
简单工厂模式(Simple Factory) UML类图示法 矩形框三层: 第一层:类的名称,若为抽象类,斜体显示 第二层:类的特性,通常是字段和属性 第三层:类的操作,通常是方法或行为 符号:'+' ...
- c++设计模式之简单工厂模式
模拟场景 要求使用简单工厂模式设计一个可以创建不同几何形状(如矩形.圆形.三角形)的绘图工具,每个几何图形都具有绘制Draw()和擦除Erase()两个方法: UML类图 分析需求: 首先这个绘图工具 ...
最新文章
- [Django]APP级别的静态文件处理
- 计算机教案制作电子表格,人教版七年级信息技术上册《制作电子表格》教案
- layer.tips定义弹出的宽度
- 使用PowerDesigner设计物理模型并运行脚本检查模型图解
- java 之选择排序与冒号排序的详解
- 操作系统【连续式分配方式、隐式链接、显示链接、索引方式、混合索引、位示图、成组链接】
- Java 程序优化:字符串操作、基本运算方法等优化策略
- 微软的焦虑?想多了!从.NET6 Preview2到大厂招聘,起飞
- PHP逐行解析文件,并写入数据库
- 32 位和 64 位版本的 Office 2010 之间的兼容性
- 老徐最近翻译的Mercury“最佳功能测试实践”-第一部分
- 电脑清理(C盘清理,卸载软件以及注册表清理)
- Maya_to_Unity工作流程
- 在win7 上安装 Visual Studio 2019 步骤 及 vs2019离线安装包
- html怎么打出一个圆点,如何打出两个字中间的圆点
- 有哪些可助力英文学术论文写作的在线网站、工具或软件?
- Document-Level Relation Extraction with Adaptive Thresholding and Localized Context Pooling 阅读笔记
- 避暑山庄消失的三十六景,曾经那么美!
- 【idea】如何设置默认的JDK
- ESP8266+micropython+HCSR04 超声波测距传感器