Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---工厂模式之简单工厂
简单工厂:工厂依据传进的参数创建相应的产品。
http://www.cnblogs.com/DelphiDesignPatterns/archive/2009/07/24/1530536.html
{《HeadFirst设计模式》工厂模式之简单工厂 }
3{ 产品类 }
4{ 编译工具 :Delphi7.0 }
5{ 联系方式 :guzh-0417@163.com }
6
7unit uProducts;
8
9interface
10
11type
12 TPizza = class(TObject)
13 public
14 procedure Prepare; virtual; abstract;
15 procedure Bake; virtual; abstract;
16 procedure Cut; virtual; abstract;
17 procedure Box; virtual; abstract;
18 end;
19
20 TCheesePizza = class(TPizza)
21 public
22 procedure Prepare; override;
23 procedure Bake; override;
24 procedure Cut; override;
25 procedure Box; override;
26 end;
27
28 TVeggiePizza = class(TPizza)
29 public
30 procedure Prepare; override;
31 procedure Bake; override;
32 procedure Cut; override;
33 procedure Box; override;
34 end;
35
36 TClamPizza = class(TPizza)
37 public
38 procedure Prepare; override;
39 procedure Bake; override;
40 procedure Cut; override;
41 procedure Box; override;
42 end;
43
44 TPepperoniPizza = class(TPizza)
45 public
46 procedure Prepare; override;
47 procedure Bake; override;
48 procedure Cut; override;
49 procedure Box; override;
50 end;
51
52implementation
53
54{ TCheesePizza }
55
56procedure TCheesePizza.Bake;
57begin
58 Writeln('烘烤奶油比萨');
59end;
60
61procedure TCheesePizza.Box;
62begin
63 Writeln('将奶油比萨装盒');
64end;
65
66procedure TCheesePizza.Cut;
67begin
68 Writeln('将奶油比萨切成片');
69end;
70
71procedure TCheesePizza.Prepare;
72begin
73 Writeln('准备奶油比萨');
74end;
75
76{ TVeggiePizza }
77
78procedure TVeggiePizza.Bake;
79begin
80 Writeln('烘烤素比萨');
81end;
82
83procedure TVeggiePizza.Box;
84begin
85 Writeln('将素比萨装盒');
86end;
87
88procedure TVeggiePizza.Cut;
89begin
90 Writeln('将素比萨切成片');
91end;
92
93procedure TVeggiePizza.Prepare;
94begin
95 Writeln('准备素比萨');
96end;
97
98{ TClamPizza }
99
100procedure TClamPizza.Bake;
101begin
102 Writeln('烘烤蛤蛎比萨');
103end;
104
105procedure TClamPizza.Box;
106begin
107 Writeln('将蛤蛎比萨装盒');
108end;
109
110procedure TClamPizza.Cut;
111begin
112 Writeln('将蛤蛎比萨切成片');
113end;
114
115procedure TClamPizza.Prepare;
116begin
117 Writeln('准备蛤蛎比萨');
118end;
119
120{ TPepperoniPizza }
121
122procedure TPepperoniPizza.Bake;
123begin
124 Writeln('烘烤Pepperoni比萨');
125end;
126
127procedure TPepperoniPizza.Box;
128begin
129 Writeln('将Pepperoni比萨装盒');
130end;
131
132procedure TPepperoniPizza.Cut;
133begin
134 Writeln('将Pepperoni比萨切成片');
135end;
136
137procedure TPepperoniPizza.Prepare;
begin
Writeln('准备Pepperoni比萨');
end;
end.
Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---工厂模式之简单工厂的更多相关文章
- Java设计模式之(工厂模式)--简单工厂模式--工厂方法模式--抽象工厂模式
工厂模式: 工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory) 简单工厂模 ...
- Java学习笔记——Java工厂模式之简单工厂
package com.app; import java.util.Date; /* * 工厂模式:简单工厂.工厂方法.抽象工厂 * * */ public class Test0718_Factor ...
- Java设计模式---工厂模式(简单工厂、工厂方法、抽象工厂)
工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类.工厂模式的形态工厂模式主要用一下几种形态:1:简单工厂(Simple Factory).2:工厂方法(Factory M ...
- 工厂模式之简单工厂模式,head first设计模式
简单设计模式比较简单,15分钟的时间,跟着我做,十几分钟学会简单设计模式,开始吧: 1.使用new实例化一个对象时,你肯定知道这种代码缺少弹性,绑定着具体的类会导致代码更加脆弱,简单工厂模式就是针对接 ...
- 设计模式之工厂模式之简单工厂(php实现)
github源码地址: git@github.com:ZQCard/design_pattern.git 1.简单工厂模式 特点:将调用者与创建者分离,调用者直接向工厂请求,减少代码的耦合.提高系统的 ...
- 【LabVIEW技巧】工厂模式_简单工厂
前言 上一个文章介绍了如何学习LabVIEW OOP,简要的提及了一些OOP学习中注意的事项,许多文章的读者反映写的太范,后文会逐步缩小范围,讨论在LabVIEW中各个模式的应用. 工厂模式概述 工厂 ...
- Java设计模式(1)——创建型模式之简单工厂模式(Simple Factory)
设计模式系列参考: http://www.cnblogs.com/Coda/p/4279688.html 一.概述 工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高 ...
- c# 设计模式 之:工厂模式之---简单工厂
1.uml类图如下: 具体实现和依赖关系: 实现:SportCar.JeepCar.HatchbackCar 实现 Icar接口 依赖: Factory依赖 SportCar.JeepCar.Hatc ...
- javascript设计模式-工厂模式(简单工厂)
接口在工厂模式中起着很重要的作用,如果不对对象进行某种类型检查的以确保其实现了必要的方法,工厂模式的好处也就所剩无几了,举个简单的例子. Interface.js // Constructor. va ...
随机推荐
- gps各种地图坐标系转换
原文地址:https://my.oschina.net/fankun2013/blog/338100 地图供应商比较多,产生了许多地图坐标.地图坐标正确转换是个问题.在之前开发地图应用的时候发现从WG ...
- [LeetCode] 7. Reverse Integer ☆
Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 Have y ...
- mysql 压缩包免安装版 安转步骤
一. 下载 MySQL 的官网下载地址:http://www.mysql.com/downloads/ 在这个下载界面会有几个版本的选择. 1. MySQL Community Server 社区版本 ...
- 「模板」网络最大流 FF && EK && Dinic && SAP && ISAP
话不多说上代码. Ford-Fulkerson(FF) #include <algorithm> #include <climits> #include <cstdio& ...
- 超酷算法-BK树
前几天无意间遇到一个博客,觉得写得挺好的,自己之前的时候有个不好的习惯,那就是遇到了好资源第一反应就是收藏起来然后却很少再看!!这是坏习惯,要改!于是今天就开始通读了,读的第二篇是BK树.觉得有点意思 ...
- 【BZOJ1093】【ZJOI2007】最大半联通子图 [DP][Tarjan]
最大半连通子图 Time Limit: 30 Sec Memory Limit: 162 MB[Submit][Status][Discuss] Description 一个有向图G=(V,E)称为 ...
- 关于SQL注入的五大报错注入函数
~全部都以查user()为例子~ 1.floor()id = 1 and (select 1 from (select count(*),concat(version(),floor(rand(0) ...
- C#编写程序监测某个文件夹内是否有文件进行了增,删,改的动作?
新建一个Console应用程序,项目名称为“FileSystemWatcher”,Copy代码进,编译后就可以用了.代码如下: using System; using System.Collectio ...
- delphi按钮文字换行
delphi按钮有TButton和TBitButton,而TButton不支持换行,TBitButton支持 拖拽TBitButton按钮以后,按alt+F12进入找到TBitButton的capti ...
- Coursera在线学习---第九节(1).异常数据检测(Anomaly Detection)
一.如何构建Anomaly Detection模型? 二.如何评估Anomaly Detection系统? 1)将样本分为6:2:2比例 2)利用交叉验证集计算出F1值,可以用F1值选取概率阈值ξ,选 ...