示例:繪圖
說明:
考慮一個支持在屏幕上繪圖的類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源碼示例:繪圖
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.