귀하는 손님 이십니다
로그인
회원가입
  
  델마당 공식 은행계좌
  하나은행 227-910235-83607
  예금주 이상국(운영진)
프로젝트 게시판
투표게시판
델마당소개
기초부터 활용까지! 델파이 교육 - 데브기어
 광고문의 :
떆由ъ쫰 媛뺤쥖 떆由ъ쫰 媛뺤쥖 입니다.
글내용 - 떆由ъ쫰 媛뺤쥖
 뜽뙆씠 뵒옄씤뙣꽩 媛뺤쥖 - 샃졇踰(Observer) 뙣꽩
梨⑤━釉뚮씪슫
(沅뚭킅씪)
2019-03-09 삤썑 1:07:38
268회 조회


첨부파일 다운로드
Observer Pattern.zip
씠踰 떆媛꾩 Observer 뙣꽩뿉 빐 꽕紐낅뱶由ш쿋뒿땲떎.

癒쇱 "Observer" 씪뒗 떒뼱瑜 쁺뼱궗쟾뿉꽌 李얠븘 蹂대㈃ 븘옒 媛숈뒿땲떎.

Observer - 蹂대뒗 궗엺, 紐⑷꺽옄, 愿李곗옄. 젙李곕퀝, 李멸씤

씠윴 뿬윭媛吏 留먯씠 굹삤뒗뜲 뵒옄씤뙣꽩뿉꽌 넻슜릺뒗 媛옣 쟻빀븳 

빐꽍 諛붾줈 "愿李곗옄" 삉뒗 "젙李곕퀝" 엯땲떎. 

씠 愿李곗옄쓽 빑떖쟻씤 뿭솢 떎쓬怨 媛숈뒿땲떎. 


1. 뼱뼡 긽솴씠 諛쒖깮븯뒗吏 옒 愿李고븯뒗 寃

2. 듅젙긽솴씠 諛쒖깮븯硫 洹 궗떎쓣 瑗 븣븘빞 븯뒗 떎瑜 긽뱾뿉寃 쟾뙆빐 二쇰뒗 寃


씠윴 媛쒕뀗씠 媛쒕컻뿉룄 瑗 븘슂븳 寃쎌슦媛 엳뒿땲떎.

梨꾪똿봽濡쒓렇옩씠 Observe 뙣꽩쓣 벐뒗 媛옣 醫뗭 삁엯땲떎. 梨꾪똿諛⑹뿉 10紐낆쓽 솕옄媛

李멸以묒씤뜲 씠以묒뿉 늻援щ뱺 湲쓣 벐硫 떎瑜 솕옄뱾룄 洹 궡슜쓣 蹂쇱닔 엳뼱빞 븯湲 븣臾몄엯땲떎.


Observe 뙣꽩쓽 TObserve 겢옒뒪쓽 빑떖湲곕뒫 떎쓬怨 媛숈뒿땲떎.


1. TObserver 겢옒뒪뒗 쟾뙆긽뱾쓣 TList 뿉 蹂닿븳떎.

2. 뼱뼡 긽솴씠 씪뼱굹硫 TList 븞뿉 蹂닿맂 쟾뙆긽쓽 듅젙 씠踰ㅽ듃瑜 諛쒖깮떆耳 以떎. 


洹몃읆 븘옒쓽 媛꾨떒븳 삁젣瑜 蹂대룄濡 븯寃좎뒿땲떎. [삁젣뒗 泥⑤뙆씪뿉 엳뒿땲떎.]

븘옒 삁젣뒗 뼱뼡 TObsv 겢옒뒪쓽 씤뒪꽩뒪媛 쟾뙆긽뱾쓣 蹂닿븯怨 엳떎媛

洹 긽뱾뿉寃 듅젙씠踰ㅽ듃瑜 넻怨좏빐 二쇰뒗 뿭솢쓣 빀땲떎. 


李멸퀬濡 TObsv 씪뒗 겢옒뒪 紐낆묶쓣 썝옒뒗 TObserver 씪怨 벐怨 떢뿀뒗뜲, 씠젃寃 벐땲源

Windows Defender 媛 궡 뀒뒪듃 봽濡쒓렇옩쓣 諛붿씠윭뒪濡 삤씤븯뒗 뼱泥섍뎄땲 뾾뒗 긽솴씠 諛쒖깮븯뒿땲떎.

씠 臾몄젣瑜 빐寃고븯湲 쐞빐 겢옒뒪 씠由꾩쓣 TObsv 씪怨 諛뽰뿉 븷 닔 뾾뿀쓬쓣 뼇빐諛붾엻땲떎.

븘留덈룄 諛붿씠윭뒪 봽濡쒓렇옩쓽 겢옒뒪 紐낆묶뱾씠 Observer 濡 릺뼱 엳뒗 寃쎌슦媛 留롮 紐⑥뼇엯땲떎. 

李멸퀬뱾 븯떆湲 諛붾엻땲떎.


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type

  TObsv = class(TObject)
  private
    FBtns : TList; //쟾뙆 긽옄뱾쓣 TList 뿉 蹂닿
  protected
    procedure   SpreadEventToBtns; //쟾뙆긽옄뱾쓽 듅젙 씠踰ㅽ듃 諛쒖깮 떆耳쒖쨲.
  public
    constructor Create;
    destructor  Destroy;override;
    procedure   RegBtn( aBtn : TButton); //쟾뙆 긽옄 異붽
    procedure   UnRegBtn( aBtn : TButton);//쟾뙆 긽옄 궘젣
  end;

  TForm1 = class(TForm)
    btnObsv: TButton;
    btn1: TButton;
    btn2: TButton;
    Bevel1: TBevel;
    Bevel2: TBevel;
    Bevel3: TBevel;
    Bevel4: TBevel;
    Bevel5: TBevel;
    btn3: TButton;
    edtText: TEdit;
    procedure FormDestroy(Sender: TObject);
    procedure btnObsvClick(Sender: TObject);
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
    procedure btn3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

var
  sObsv : TObsv;

{$R *.dfm}

{ TObsv }

constructor TObsv.Create;
begin
  FBtns := TList.Create;
end;

destructor TObsv.Destroy;
begin
  FBtns.Free;
  inherited;
end;

procedure TObsv.RegBtn( aBtn : TButton );
begin
  if FBtns.IndexOf(aBtn) = -1 then FBtns.Add( aBtn );
end;

procedure TObsv.UnRegBtn( aBtn : TButton );
begin
  FBtns.Remove(aBtn);
end;

procedure TObsv.SpreadEventToBtns;//<= 씠踰ㅽ듃 쟾뙆 [씠 硫붿꽌뱶媛 Observer 뙣꽩쓽 빑떖엯땲떎. ]
var
  i: Integer;
  aBtn: TButton;
begin
  for i := 0 to FBtns.Count - 1 do begin
    aBtn := FBtns[i];
    aBtn.OnClick(self);
  end;
end;


{Form}

procedure TForm1.FormCreate(Sender: TObject);
begin
  sObsv := TObsv.Create;
  sObsv.RegBtn( btn1 );
  sObsv.RegBtn( btn2 );
  sObsv.RegBtn( btn3 );
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  sObsv.Free;
end;

procedure TForm1.btnObsvClick(Sender: TObject);
begin
  sObsv.SpreadEventToBtns;
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  btn1.Caption := edtText.Text + '쓽 븘넻';
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
  btn2.Caption := edtText.Text + '쓽 뿰븘';
end;

procedure TForm1.btn3Click(Sender: TObject);
begin
  btn3.Caption := edtText.Text + '쓽 吏슦媛';
end;


end.

궡슜씠 醫 遺떎븳 寃 媛숆린 븯굹 떎젰씠 遺議깊븳 젏 뼇빐 遺긽뱶由щʼn,

씠긽쑝濡 Observer 뙣꽩 媛뺤쥖瑜 留덉묠땲떎.

샊떆씪룄 궡슜뿉 臾몄젣릺뒗 젏씠 엳쑝硫 뼵젣뱺 留먯빐 二쇱떆湲 諛붾엻땲떎.