?? 紅よ猭妓Α.mht
字號:
man"'>兩個主要的實作變Ô=
70;:</span><span
lang=3DEN-US><o:p></o:p></span></b></p>
<p class=3DMsoNormal style=3D'margin-left:48.0pt;text-indent:-48.0pt;mso-te=
xt-indent-alt:
-24.0pt;mso-list:l6 level2 lfo7;tab-stops:list 48.0pt'><![if !supportLists]=
><span
lang=3DEN-US style=3D'mso-fareast-font-family:"Times New Roman"'><span
style=3D'mso-list:Ignore'><span style=3D'font:7.0pt "Times New Roman"'>&nbs=
p;
</span>i.<span style=3D'font:7.0pt "Times New Roman"'> &nb=
sp;
</span></span></span><![endif]><span lang=3DEN-US>Creator</span><span
style=3D'font-family:PMingLiU;mso-ascii-font-family:"Times New Roman";mso-h=
ansi-font-family:
"Times New Roman"'>類別是一個抽象=
類別並未對其宣告的=
4037;廠方法實作,其子༼=
6;別因為沒有預設的實&=
#20316;因此必須去實作這$=
889;個工廠方法。這種方=
;式有個困難就是去實&#=
20316;無法預知的類別。</spa=
n></p>
<p class=3DMsoNormal style=3D'margin-left:48.0pt;text-indent:-48.0pt;mso-te=
xt-indent-alt:
-24.0pt;mso-list:l6 level2 lfo7;tab-stops:list 48.0pt'><![if !supportLists]=
><span
lang=3DEN-US style=3D'mso-fareast-font-family:"Times New Roman"'><span
style=3D'mso-list:Ignore'><span style=3D'font:7.0pt "Times New Roman"'>&nbs=
p;
</span>ii.<span style=3D'font:7.0pt "Times New Roman"'> &n=
bsp;
</span></span></span><![endif]><span lang=3DEN-US>Creator</span><span
style=3D'font-family:PMingLiU;mso-ascii-font-family:"Times New Roman";mso-h=
ansi-font-family:
"Times New Roman"'>類別是一個具體=
類別並提供一個預設=
4037;廠方法實作,這種ਬ=
1;式使用工廠方法主要&=
#26159;為了彈性。這種方=
335;是依據下列這個規則=
;『以一個區隔開來的&#=
30340;操作構建物件;以ť=
31;子類別可以改寫他們=
構建的方式』。這個=
5215;則如果需要可以讓ड=
6;類別的設計者改變父&=
#39006;別的物件的類別</span><span
lang=3DEN-US>(The rule ensure that designers of subclass can change the cla=
ss of
objects their parent class instantiates if necessary)</span><span
style=3D'font-family:PMingLiU;mso-ascii-font-family:"Times New Roman";mso-h=
ansi-font-family:
"Times New Roman"'>。</span></p>
<p class=3DMsoNormal style=3D'margin-left:24.0pt'><span style=3D'font-famil=
y:PMingLiU;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Ro=
man"'>也可能是一個抽象Ɔ=
06;別但是定義一個預設=
的實作;但這比較不=
6222;遍。</span></p>
<p class=3DMsoNormal style=3D'margin-left:24.0pt;text-indent:-24.0pt;mso-li=
st:l3 level1 lfo8;
tab-stops:list 24.0pt'><![if !supportLists]><span lang=3DEN-US style=3D'mso=
-fareast-font-family:
"Times New Roman"'><span style=3D'mso-list:Ignore'>2.<span style=3D'font:7.=
0pt "Times New Roman"'>
</span></span></span><![endif]><b><span style=3D'font-family:PMingLiU;mso-a=
scii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>參數=
化工廠方法:</span></b><span
style=3D'font-family:PMingLiU;mso-ascii-font-family:"Times New Roman";mso-h=
ansi-font-family:
"Times New Roman"'>另一種版本的樣=
式是讓工廠方法構建=
2810;種</span><span
lang=3DEN-US>(multiple kinds)</span><span style=3D'font-family:PMingLiU;mso=
-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>的產=
品,這個工廠方法帶=
6377;一參數以區分要構ॿ=
4;之物件的種類。所有&=
#36889;個工廠方法構建的=
289;件共用相同的</span><span
lang=3DEN-US>Product</span><span style=3D'font-family:PMingLiU;mso-ascii-fo=
nt-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>介面=
。在前述</span><span
lang=3DEN-US>Document</span><span style=3D'font-family:PMingLiU;mso-ascii-f=
ont-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>的例=
子中;你傳遞一個參=
5976;給</span><span
class=3DSpellE><span lang=3DEN-US>CreateDocument</span></span><span
style=3D'font-family:PMingLiU;mso-ascii-font-family:"Times New Roman";mso-h=
ansi-font-family:
"Times New Roman"'>決定要構建的文=
件種類。</span><span
class=3DSpellE><span lang=3DEN-US>Unidraw</span></span><span style=3D'font-=
family:
PMingLiU;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Tim=
es New Roman"'>圖形編輯框架就=
159;使用這種方式。參數=
;化工廠方法有個一般&#=
21270;的格式如下範例:</spa=
n></p>
<div align=3Dcenter>
<table class=3DMsoNormalTable border=3D1 cellspacing=3D0 cellpadding=3D0
style=3D'background:#F3F3F3;border-collapse:collapse;border:none;mso-borde=
r-alt:
solid windowtext .5pt;mso-padding-alt:0cm 1.4pt 0cm 1.4pt;mso-border-insid=
eh:
.5pt solid windowtext;mso-border-insidev:.5pt solid windowtext'>
<tr style=3D'mso-yfti-irow:0;mso-yfti-lastrow:yes'>
<td width=3D697 valign=3Dtop style=3D'width:418.1pt;border:solid windowte=
xt 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:0cm 1.4pt 0cm 1.4pt'>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'>interface<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'>type<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span style=3D'mso-spacerun:yes'>
</span><span class=3DSpellE>TProductID</span> =3D (MINE, YOURS, theirs);<=
o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span style=3D'mso-spacerun:yes'>
</span><span class=3DSpellE>TProduct</span> =3D class<o:p></o:p></span></=
p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span style=3D'mso-spacerun:yes'>
</span>public<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span
style=3D'mso-spacerun:yes'> </span>constructor Create;
virtual;<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span
style=3D'mso-spacerun:yes'> </span>destructor Destroy; =
override;<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span style=3D'mso-spacerun:yes'>
</span>end;<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span style=3D'mso-spacerun:yes'>
</span><span class=3DSpellE>TMyProduct</span> =3D class(<span class=3DSpe=
llE>TProduct</span>)<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span
style=3D'mso-spacerun:yes'> </span>constructor Create;
override;<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span
style=3D'mso-spacerun:yes'> </span>destructor Destroy;
override;<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span style=3D'mso-spacerun:yes'>
</span>end;<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span style=3D'mso-spacerun:yes'>
</span><span class=3DSpellE>TYourProduct</span> =3D class(<span class=3DS=
pellE>TProduct</span>)<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span
style=3D'mso-spacerun:yes'> </span>constructor Create;
override;<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span
style=3D'mso-spacerun:yes'> </span>destructor Destroy;
override;<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span style=3D'mso-spacerun:yes'>
</span>end;<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span style=3D'mso-spacerun:yes'>
</span><o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span style=3D'mso-spacerun:yes'>
</span><span class=3DSpellE>TCreator</span> =3D class<o:p></o:p></span></=
p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span style=3D'mso-spacerun:yes'>
</span>public<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span
style=3D'mso-spacerun:yes'> </span>constructor Create;
virtual;<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span
style=3D'mso-spacerun:yes'> </span>destructor Destroy;
override;<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'>//</span><span style=3D'font-size:10.0p=
t;
mso-bidi-font-size:12.0pt;font-family:PMingLiU;mso-ascii-font-family:"Cou=
rier New";
mso-hansi-font-family:"Courier New";mso-bidi-font-family:"Courier New"'>&=
#21407;文中之</span><span
lang=3DEN-US style=3D'font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fam=
ily:
"Courier New"'>Create<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span
style=3D'mso-spacerun:yes'> </span>function <span
class=3DSpellE>CreateProduct</span>(<span class=3DSpellE>ProductID</span>=
: <span
class=3DSpellE>TProductID</span>): <span class=3DSpellE>TProduct</span>; =
virtual;
<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span style=3D'mso-spacerun:yes'>
</span>end;<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><o:p> </o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'>implementation<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><o:p> </o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'>function <span class=3DSpellE>TCreator.=
CreateProduct</span>(<span
class=3DSpellE>ProductID</span>: <span class=3DSpellE>TProductID</span>):=
<span
class=3DSpellE>TProduct</span>;<o:p></o:p></span></p>
<p class=3DMsoNormal><span class=3DSpellE><span lang=3DEN-US style=3D'fon=
t-size:10.0pt;
mso-bidi-font-size:12.0pt;font-family:"Courier New"'>var</span></span><sp=
an
lang=3DEN-US style=3D'font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fam=
ily:
"Courier New"'><o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span style=3D'mso-spacerun:yes'>
</span><span class=3DSpellE>aProduct</span>: <span class=3DSpellE>TProduc=
t</span>;<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'>begin<o:p></o:p></span></p>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'font-size:10.0pt;mso-bid=
i-font-size:
12.0pt;font-family:"Courier New"'><span style=3D'mso-spacerun:yes'>
</span><span class=3DSpellE>aProduct</span>:=3Dnil;<o:p></o:p></span></p>
<p class=
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -