这个设计模式的名称是什么?

时间:2015-01-13 12:46:59

标签: delphi design-patterns delphi-xe2

我经常发现自己正在编写像这样使用的类:

  • 创建班级的对象
  • 打电话给"运行"或者"执行"该对象的方法
  • 销毁对象

这会给调用代码增加一些开销,例如:

var
  Foo: TFoo;
begin
  Foo := TFoo.Create(...);
  try
    Foo.Run(...);
  finally
    Foo.Free;
  end;
end;

这可以写得更短:

begin
  TFoo.Run(...);
end;

在这种情况下,包含TFoo类的单元将如下所示:

type
  TFoo = class
  private
    FBar: TBar;
    procedure InternalRun;
  public
    class procedure Run(ABar: TBar); static;
  end;

class procedure TFoo.Run(ABar: TBar);
var
  Foo: TFoo;
begin
  Foo := TFoo.Create;
  try
    Foo.FBar := ABar;
    Foo.InternalRun;
  finally
    Foo.Free;
  end;
end;

开销从调用代码移到TFoo类。

这种设计模式的名称是什么?

2 个答案:

答案 0 :(得分:3)

如果我快速查看Portland Pattern Repository,则问题的第一部分类似于MethodObject pattern非常接近。

但是既然你正在寻找后一位的名字,它就叫class method,它不是一种模式,它是一种语言结构。

答案 1 :(得分:2)

这与我{简单} Command Pattern的实现非常相似。