博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对象合成复用之策略模式
阅读量:6146 次
发布时间:2019-06-21

本文共 879 字,大约阅读时间需要 2 分钟。

对象合成:通过获得对其它对象的引用而在运行期动态定义的。
在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分,新的对象通过向这些对象的委派责任达到复用已有功能的目的。
以策略模式举例:
type
  TStrategy=class(TObject)//抽象策略
  public
    procedure Hello;virtual;abstract;
  end;
  TConcreteStrategyA=class(TStrategy)//具体策略A
  public
    procedure Hello;override;
  end;
  TConcreteStrategyB=class(TStrategy)//具体策略B
  public
    procedure Hello;override;
  end;
  TContext=class(Tobject)//上下文
  private
    FStrategy:TStrategy;//引用已有的对象
    Procedure SetStrategy(Value:TStrategy);
  public
    procedure ContextInterface;//向已有的对象委派责任
    property Strategy:TStrategy read FStrategy write SetStrategy;
  end;
implementation
procedure TConcreteStrategyA.Hello;
begin
  //do something
end;
procedure TConcreteStrategyB.Hello;
begin
  //do something
end;
procedure TContext.ContextInterface;
begin
  Strategy.Hello;
end;
procedure TContext.SetStrategy(Value:TStrategy);
begin
  FStrategy:=Value;
end;
这样在运行时通过用户给出的对象类型,系统会自动调用给定对象的具体方法。 

转载地址:http://dnmya.baihongyu.com/

你可能感兴趣的文章
重新想象 Windows 8 Store Apps (18) - 绘图: Shape, Path, Stroke, Brush
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
Android扩展 - 拍照篇(Camera)
查看>>
数据加密插件
查看>>
linux后台运行程序
查看>>