示例:绘图
说明:
考虑一个支持在屏幕上绘图的类View。一个视图在进入"焦点"(focus)状态时才可设定合适的特定绘图状态(如颜色和字体),因而只有成为"焦点"之后才能进行绘图。View类强制其子类遵循这个规则。
代码:
unit uView;
interface
uses
Graphics;
type
TView = class
private
FCanvas: TCanvas;
FFocus: Boolean;
procedure SetFocus();
procedure ResetFocus();
protected
procedure DoDisplay(); virtual;
public
constructor Create(ACanvas: TCanvas);
//---
procedure Display();
end;
TMyView = class(TView)
protected
procedure DoDisplay(); override;
end;
procedure Test(ACanvas: TCanvas);
implementation
procedure Test(ACanvas: TCanvas);
var
AView: TView;
begin
AView := TMyView.Create(ACanvas);
AView.Display;
AView.Free;
end;
procedure TView.Display();
begin
SetFocus();
DoDisplay();
ResetFocus();
end;
procedure TView.DoDisplay();
begin
end;
procedure TView.SetFocus();
begin
FFocus := True;
end;
procedure TView.ResetFocus();
begin
FFocus := false;
end;
procedure TMyView.DoDisplay();
begin
with FCanvas do
begin
Font.Color := clRed;
TextOut(10, 10, '123');
end;
end;
constructor TView.Create(ACanvas: TCanvas);
begin
FCanvas := ACanvas;
end;
end.
《GOF设计模式》—模板方法(TEMPLATE METHOD)—Delphi源码示例:绘图
最新推荐文章于 2024-07-27 18:05:15 发布