用Delphi实现四人帮(Gof)设计模式-6 模板方法 Template Method - cococlout的专栏 - CSDN博客

来源:百度文库 编辑:神马文学网 时间:2024/05/17 08:01:03

用Delphi实现四人帮(Gof)设计模式-6 模板方法 Template Method收藏

有时候我们会编写由一系列步骤构成的过程(算法),从高的层次看,这写过程是相同的,但有些步骤的实现可能不同.在实现这些算法的时候,如果我们把不变的和可变的步骤都写在一起,必然会导致不变行为在多个类似过程中重复出现,不整洁也丧失了可复用性,很糟糕,用模板方法可以解决这个问题,实现代码的复用.

模板方法通过定义一个操作中的算法的骨架(若干步骤),将一些步骤延迟到子类中,完成代码的复用.模板算法使得子类可以在不改变一个算法的结构的前提下重新定义该算法的某些特定步骤.

类图如下

 

模板方法类实现

  1. unit TemplateMethodUnit;
  2. interface
  3. type 

  4.   TAbstractClass = class
  5.       protected 
  6.          procedure FractionalOperation;virtual;abstract;
  7.       public 
  8.          procedure TemplateMethod;
  9.   end;
  10.   
  11.   TConcreteClass = class(TAbstractClass)
  12.      protected 
  13.           procedure FractionalOperation;override;
  14.   end;

  15. implementation

  16. procedure TAbstractClass.TemplateMethod;
  17. begin
  18.    Writeln('模板方法开始');
  19.    FractionalOperation;
  20.    Writeln('模板方法结束');
  21. end;

  22. procedure TConcreteClass.FractionalOperation;
  23. begin
  24.    Writeln('子类嵌入的某个步骤');
  25. end;

  26. end.

 

Client实现

  1. program TemplateMethod;
  2. {$APPTYPE CONSOLE}
  3. uses 
  4.   TemplateMethodUnit;
  5.  var
  6.    AVar : TConcreteClass;
  7.  begin
  8.    AVar := TConcreteClass.Create;
  9.    AVar.TemplateMethod;
  10.  end.

运行结果

 

D:\Projects\Delphi7\src\GofProjects\TemplateMethod>TemplateMethod
模板方法开始
子类嵌入的某个步骤
模板方法结束


用Delphi实现四人帮(Gof)设计模式-6 模板方法 Template Method - cococlout的专栏 - CSDN博客 用Delphi实现四人帮(Gof)设计模式-3装饰模式 Decorator MOdel - cococlout的专栏 - CSDN博客 用Delphi实现四人帮(Gof)设计模式-8构建者模式 Builder - cococlout的专栏 - CSDN博客 用Delphi实现四人帮(Gof)设计模式-9观察者模式Publish/Subscribe,Observer - cococlout的专栏 - CSDN博客 模板方法模式(Template Method Pattern) GoF设计模式之三 Factory Method- - GoF设计模式之三 Factory Method- - 与大虾对话: 领悟设计模式 Template Method / Visitor delphi多线程 - 焦祺的编程专栏 - CSDN博客 《Java与模式》学习笔记:设计模式——模板(Template)模式 《Java与模式》学习笔记:设计模式——模板(Template)模式 - shanchao... GoF设计模式小结- - GOF设计模式 GOF设计模式 GoF设计模式小结- - 学习GoF设计模式的重要性 设计模式学习 研究 observer设计模式的java实现 - 小小冰的专栏 软件设计模式(耦合) - LZD_jay的专栏 - CSDN博客 用 Delphi 学设计模式(二) 之工厂方法篇 设计自动升级软件 - 小肖的专栏 - CSDN博客 c#泛型和反射的设计应用(一) - yutao051的专栏 - CSDN博客 周海汉:标准模板库stl 容器的线程安全 - 周海汉的开发专栏 - CSDN博客 VC中调用EXECL模板生成报表 - SEUU的专栏 - CSDN博客 PHP日期格式化方法 - aspgreener的专栏 - CSDN博客