《GOF設計模式》—模板方法(TEMPLATE METHOD)—Delphi源碼示例:繪圖

示例:繪圖
說明:
考慮一個支持在屏幕上繪圖的類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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章