《大话设计模式》之 装饰模式 Delphi实现

本文通过Delphi代码展示了装饰模式的应用,解释了如何利用装饰模式动态地为对象添加新功能,以此避免使用大量的子类。以西游记中孙悟空的72般变化为例,通过创建抽象基类及不同能力的装饰类,实现了功能的层层叠加,同时保持了代码的灵活性。
摘要由CSDN通过智能技术生成

 装饰模式:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。[GOF 《设计模式》]

这句话怎么理解?

 一般来说,增加功能,一般有增加类本身的功能;另外一种是增加子类;但是现实中,靠增加子类来满足实际需求,是远远不够的,缺少灵活性;

 

装饰模式,它强调的要增加功能,但又不允许生产过多子类,那么该怎么实现呢? 它的指导思想,是进行包裹,层次包裹。子类对象包裹父类对象,一层一层,功能就一层一层。

  1.首先定义一个首先抽象类或接口;

  2.定了两个继承抽象类或实现接口方法的类,一个是装饰类,一个一般类,装饰类,定义一个方法,接受父类型;

 

 

{
 装饰模式,强调的功能逐渐一层层包裹。 本例子, 以西游记中,孙悟空的72般变化,话说当年,
 悟空不远千里,拜师学艺,功夫是一天天长进。腾云驾雾,翻筋斗,变美女/树等,这些功夫,是
 一一学会的。
 抽象虚拟类,作为父类。


所有代码 均在 Delphi7 测试通过

 

}
unit Decorator;

interface
uses ComObj;
type

   {基础类}
  TMonkey = class(TObject)
  private

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值