我经常发现自己正在编写像这样使用的类:
这会给调用代码增加一些开销,例如:
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
类。
这种设计模式的名称是什么?
答案 0 :(得分:3)
如果我快速查看Portland Pattern Repository,则问题的第一部分类似于MethodObject pattern非常接近。
但是既然你正在寻找后一位的名字,它就叫class method,它不是一种模式,它是一种语言结构。
答案 1 :(得分:2)
这与我{简单} Command Pattern的实现非常相似。