?? 紅よ猭妓Α.mht
字號:
<p class=3DMsoNormal style=3D'text-indent:27.0pt;mso-char-indent-count:2.25=
'><span
style=3D'font-family:PMingLiU;mso-ascii-font-family:"Times New Roman";mso-h=
ansi-font-family:
"Times New Roman"'>工廠方法樣式隱=
含一個缺點就是使用=
1471;可能必須從</span><span
lang=3DEN-US>Creator</span><span style=3D'font-family:PMingLiU;mso-ascii-fo=
nt-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>類別=
繼承只是構建一個特=
3450;</span><span
class=3DSpellE><span lang=3DEN-US>ContreteProduct</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
lang=3DEN-US>Creator</span><span style=3D'font-family:PMingLiU;mso-ascii-fo=
nt-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>繼承=
是好的,但是使用端=
4517;須去處理其他發展௚=
0;觀點</span><span
lang=3DEN-US>(point of evolution)</span><span style=3D'font-family:PMingLiU;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Ro=
man"'>。</span></p>
<p class=3DMsoNormal style=3D'margin-left:24.0pt;text-indent:-24.0pt;mso-li=
st:l2 level1 lfo6;
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'>1.<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><span
lang=3DEN-US>(hooks)</span></b><span style=3D'font-family:PMingLiU;mso-asci=
i-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>:在=
類別內使用工廠方法=
0358;構建物件是比直接ઔ=
3;建物件來的有彈性,&=
#24037;廠方法樣式給子類=
029;一個勾結</span><b><span
lang=3DEN-US>(hooks)</span></b><span style=3D'font-family:PMingLiU;mso-asci=
i-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>以提=
供物件一個擴充版本=
2290;在本章上述</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"'>例子=
中;</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"'>類別=
可以定義一個工廠方=
7861;叫</span><span
class=3DSpellE><span lang=3DEN-US>CreateFileDialog</span></span><span
style=3D'font-family:PMingLiU;mso-ascii-font-family:"Times New Roman";mso-h=
ansi-font-family:
"Times New Roman"'>它構建一個預設=
的<b>檔案開啟對話框</b>=
289;件以開啟一個現存的=
;文件。而文件</span><span
lang=3DEN-US>(Product)</span><span style=3D'font-family:PMingLiU;mso-ascii-=
font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>子類=
別繼承這個工廠方法=
1487;以定義一個應用程ঁ=
5;關連檔案對話框。在&=
#36889;個例子中工廠方法=
006;非抽象但是提供一個=
;預設的實作。</span></p>
<p class=3DMsoNormal style=3D'margin-left:24.0pt;text-indent:-24.0pt;mso-li=
st:l2 level1 lfo6;
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"'>連接=
平行的類別層級架構</s=
pan><span
lang=3DEN-US>(parallel class hierarchies)</span></b><b><span style=3D'font-=
family:
PMingLiU;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Tim=
es 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"'>在這個例子中到=
目前為止;工廠方法=
1482;被</span><span
lang=3DEN-US>Creator</span><span style=3D'font-family:PMingLiU;mso-ascii-fo=
nt-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>呼叫=
;但並不只限於此;=
0351;用端可以找到更有ஷ=
2;的使用途徑;尤其是&=
#20197;下平行類別層級架=
083;的例子。</span></p>
<p class=3DMsoNormal style=3D'margin-left:27.0pt;mso-para-margin-left:2.25g=
d'><span
style=3D'font-family:PMingLiU;mso-ascii-font-family:"Times New Roman";mso-h=
ansi-font-family:
"Times New Roman"'>平行類別層級架=
構是當一個類別委託=
0182;的部分責任給另一ࠁ=
1;類別時的結果。處理&=
#22294;形時我們可以操作=
294;形如以滑鼠平移、旋=
;轉等,這些處理動作&#=
19968;般是不容易設計的z=
90;這些動作需要即時紀=
錄或更新物件的狀態=
5307;而這些狀態記錄只੍=
7;在操作這些動作時才&=
#23384;在因此不需要記錄=
312;圖形物件上,更甚者=
;不同的物件在操作時&#=
34892;為方式也不一樣。Ë=
63;如拉長一個線段只是=
拉長線的一端;而拉=
8263;文字物件時可能改෴=
2;文字線條間的間距。&=
#30001;於上述的限制;使=
992;個別的操作</span><span
lang=3DEN-US>(manipulator)</span><span style=3D'font-family:PMingLiU;mso-as=
cii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>物件=
是比較好的;這些個=
1029;操作物件實作這些ߛ=
4;動行為及持需追蹤所&=
#26377;操作的必要狀態,=
981;同的圖形使用不同的=
;操作子類別來控制個&#=
21029;的行為。這個操作Ɔ=
06;別層級架構如圖示。=
</span></p>
<p class=3DMsoNormal style=3D'margin-left:27.0pt;mso-para-margin-left:2.25g=
d'><!--[if gte vml 1]><v:shape
id=3D"_x0000_s1028" type=3D"#_x0000_t75" style=3D'position:absolute;left:0;
text-align:left;margin-left:0;margin-top:9pt;width:414pt;height:174.25pt;
z-index:2;mso-position-horizontal:center' stroked=3D"t" strokeweight=3D"1.=
25pt">
<v:imagedata src=3D"file7231.files/image008.emz" o:title=3D""/>
</v:shape><![endif]--><![if !vml]><span style=3D'mso-ignore:vglayout'>
<table cellpadding=3D0 cellspacing=3D0 align=3Dleft>
<tr>
<td width=3D0 height=3D10></td>
</tr>
<tr>
<td></td>
<td><img width=3D556 height=3D237 src=3D"file7231.files/image012.gif" v:s=
hapes=3D"_x0000_s1028"></td>
</tr>
</table>
</span><![endif]><span lang=3DEN-US><o:p> </o:p></span></p>
<p class=3DMsoNormal style=3D'margin-left:27.0pt;mso-para-margin-left:2.25g=
d'><span
lang=3DEN-US><o:p> </o:p></span></p>
<p class=3DMsoNormal style=3D'margin-left:27.0pt;mso-para-margin-left:2.25g=
d'><span
lang=3DEN-US><o:p> </o:p></span></p>
<p class=3DMsoNormal style=3D'margin-left:27.0pt;mso-para-margin-left:2.25g=
d'><span
lang=3DEN-US><o:p> </o:p></span></p>
<p class=3DMsoNormal style=3D'margin-left:27.0pt;mso-para-margin-left:2.25g=
d'><span
lang=3DEN-US><o:p> </o:p></span></p>
<p class=3DMsoNormal style=3D'margin-left:27.0pt;mso-para-margin-left:2.25g=
d'><span
lang=3DEN-US><o:p> </o:p></span></p>
<p class=3DMsoNormal style=3D'margin-left:27.0pt;mso-para-margin-left:2.25g=
d'><span
lang=3DEN-US><o:p> </o:p></span></p>
<p class=3DMsoNormal style=3D'margin-left:27.0pt;mso-para-margin-left:2.25g=
d'><span
lang=3DEN-US><o:p> </o:p></span></p>
<p class=3DMsoNormal style=3D'margin-left:27.0pt;mso-para-margin-left:2.25g=
d'><span
lang=3DEN-US><o:p> </o:p></span></p>
<p class=3DMsoNormal style=3D'margin-left:27.0pt;mso-para-margin-left:2.25g=
d'><span
lang=3DEN-US><o:p> </o:p></span></p>
<p class=3DMsoNormal style=3D'margin-left:27.0pt;mso-para-margin-left:2.25g=
d'><span
lang=3DEN-US><o:p> </o:p></span></p>
<br style=3D'mso-ignore:vglayout' clear=3DALL>
<p class=3DMsoNormal style=3D'margin-left:27.0pt;mso-para-margin-left:2.25g=
d'><span
style=3D'font-family:PMingLiU;mso-ascii-font-family:"Times New Roman";mso-h=
ansi-font-family:
"Times New Roman"'>這個圖形</span><span lang=3DEN-U=
S>(Figure)</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>CreateManipulator</span></span><span
style=3D'font-family:PMingLiU;mso-ascii-font-family:"Times New Roman";mso-h=
ansi-font-family:
"Times New Roman"'>工廠方法讓使用=
端構建一個圖形相對=
0340;操作</span><span
lang=3DEN-US>(Manipulator)</span><span style=3D'font-family:PMingLiU;mso-as=
cii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>。圖=
形的子類別改寫這個=
4037;廠方法以傳回相對ਔ=
5;作子類別的實體物件&=
#12290;另一種替代方法是=
294;形類別可以實作</span><span
class=3DSpellE><span lang=3DEN-US>CreateManipulator</span></span><span
style=3D'font-family:PMingLiU;mso-ascii-font-family:"Times New Roman";mso-h=
ansi-font-family:
"Times New Roman"'>傳回預設的操作=
實體物件而圖形子類=
1029;只是繼承預設的,ࣳ=
4;此圖形類別無須相對&=
#25033;的操作子類別:因=
858;層級架構只是部分的=
;平行。</span></p>
<p class=3DMsoNormal style=3D'margin-left:27.0pt;mso-para-margin-left:2.25g=
d'><span
style=3D'font-family:PMingLiU;mso-ascii-font-family:"Times New Roman";mso-h=
ansi-font-family:
"Times New Roman"'>最後請注意工廠=
方法如何定義這兩個=
9006;別層級架構的連接ᦂ=
7;<span
style=3D'color:navy'>《譯註:經由ࢵ=
4;形子類別的工廠方法&=
#27083;建相對應的操作物=
214;;而這工廠方法是操=
;作類別的構建函數》</=
span>因為他將個別類別৓=
2;屬的知識依據分屬集&=
#20013;在一起</span><span
lang=3DEN-US>(It localize knowledge of which classes belong together)</span=
><span
style=3D'font-family:PMingLiU;mso-ascii-font-family:"Times New Roman";mso-h=
ansi-font-family:
"Times New Roman"'>。</span></p>
<h3><span style=3D'font-family:PMingLiU;mso-ascii-font-family:Arial;mso-han=
si-font-family:
Arial'>實作</span><span lang=3DEN-US>(Implementation)</span></h=
3>
<p class=3DMsoNormal style=3D'margin-left:24.0pt;text-indent:-24.0pt;mso-li=
st:l6 level1 lfo7;
tab-stops:list 24.0pt'><![if !supportLists]><b><span lang=3DEN-US
style=3D'mso-fareast-font-family:"Times New Roman"'><span style=3D'mso-list=
:Ignore'>1.<span
style=3D'font:7.0pt "Times New Roman"'> =
</span></span></span></b><![endif]><b><span style=3D'font-family:PMingLiU;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Ro=
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -