《GOF设计模式》—模板方法(TEMPLATE METHOD)—Delphi源码示例:模板方法接口

示例:模板方法接口
说明:
(1)、定义
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

(2)、结构
clip_image002
AbstractClass(抽象类):定义抽象的原语操作(primitive operation),具体的子类将重定义它们以实现一个算法的各步骤;实现一个模板方法,定义一个算法的骨架。该模板方法不仅调用原语操作,也调用定义在AbstractClass或其他对象中的操作。
ConcreteClass(具体类):实现原语操作以完成算法中与特定子类相关的步骤。

代码:
unit uTemplateMethod;

interface

uses
    
    Dialogs;

type
    TAbstractClass = class
    protected
        procedure PrimitiveOperation1; virtual;
        procedure PrimitiveOperation2; virtual;
    public
        procedure TemplateMethod;
    end;
    TConcreteClass = class(TAbstractClass)
    protected
        procedure PrimitiveOperation1; override;
        procedure PrimitiveOperation2; override;
    end;
    
procedure Test;

implementation

procedure Test;
var
    AObject: TAbstractClass;
begin
    AObject := TConcreteClass.Create;
    AObject.TemplateMethod;
    AObject.Free;
end;

procedure TAbstractClass.PrimitiveOperation1;
begin

end;

procedure TAbstractClass.PrimitiveOperation2;
begin

end;

procedure TAbstractClass.TemplateMethod;
begin
    PrimitiveOperation1;
    PrimitiveOperation2;
end;

procedure TConcreteClass.PrimitiveOperation1;
begin
    ShowMessage('1');
end;

procedure TConcreteClass.PrimitiveOperation2;
begin
    ShowMessage('2');
end;

end.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值