用 Delphi 学设计模式(二) 之 工厂方法篇 (原…
2008-04-09 04:21:57来源:互联网 阅读 ()
? “开闭原则”:一个模块应该易于扩展,免于修改
问题:请考虑上一章的例子中,如果添加一个新的具体水果类“西瓜”需要做哪些工作。
本章完成以下内容:
1、代码用支持中文的 Delphi 2005 编译并通过,并去除了其中一些无关紧要的地方,如异常处理等 ;
2、重新设计一个情景,分别用“简单工厂模式”和“工厂方法模式”两种方法实现,请体会其中的差别 ;
3、在情景中添加一个子类后,请体会“简单工厂模式”和“工厂方法模式”两种方法不同的处理方式;
4、如果不理解什么是接口、多态、静态函数等概念,这里不作解释,请看第一章或找相关资料;
5、本章的情景和上一章差不多,只是把工厂从“果园”变成了“水果小贩”;同样的三种水果:苹果、葡萄、草莓;每种水果都封装了两个逻辑,在和外部“交易”时会用到这两个逻辑。 最后,请重新回顾“开闭原则”
下面开始吧。。。。。。。
这里是简单工厂模式的实现方法,在这种模式中:
1、一个小贩要负责所有三种水果的交易,这对他来说是很大的挑战噢,不信您看!
2、顾客必须对水果的名字有一个准确地描述,这样水果才会卖给你,这很影响生意呀!
//简单工厂类和水果类单元文件
unit SimpleFactory;
interface
type
接口_水果 = interface(IInterface)
function 提示():string;
function 被评价():string;
end;
类_苹果 = class(TInterfacedObject, 接口_水果)
function 提示():string;
function 被评价():string;
end;
类_葡萄 = class(TInterfacedObject, 接口_水果)
function 提示():string;
function 被评价():string;
end;
类_草莓 = class(TInterfacedObject, 接口_水果)
function 提示():string;
function 被评价():string;
end;
工厂类_小贩 = class(TObject)
public
class function 工厂(水果名:string): 接口_水果;
end;
implementation
{***** 类_苹果 *****}
function 类_苹果.提示():string;
begin
result:=''''削了皮再吃!'''';
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash