?? 工廠方法樣式.mht
字號:
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
table.a0
{mso-style-name:\8868\683C\5167\6587;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";}
</style>
<![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"3074"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1"/>
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3DZH-CN link=3Dblue vlink=3Dpurple style=3D'tab-interval:24.0pt;=
text-justify-trim:
punctuation'>
<div class=3DSection1 style=3D'layout-grid:18.0pt'>
<h2><span style=3D'font-family:SimSun;mso-ascii-font-family:Arial;mso-hansi=
-font-family:
Arial'>工厂方法样式</span><span lang=3D=
EN-US>(Factory
Method)</span><span lang=3DEN-US style=3D'mso-fareast-language:ZH-TW'><o:p>=
</o:p></span></h2>
<p class=3DMsoNormal><span lang=3DEN-US style=3D'mso-fareast-language:ZH-TW=
'><!--[if gte vml 1]><v:shapetype
id=3D"_x0000_t75" coordsize=3D"21600,21600" o:spt=3D"75" o:preferrelative=
=3D"t"
path=3D"m@4@5l@4@11@9@11@9@5xe" filled=3D"f" stroked=3D"f">
<v:stroke joinstyle=3D"miter"/>
<v:formulas>
<v:f eqn=3D"if lineDrawn pixelLineWidth 0"/>
<v:f eqn=3D"sum @0 1 0"/>
<v:f eqn=3D"sum 0 0 @1"/>
<v:f eqn=3D"prod @2 1 2"/>
<v:f eqn=3D"prod @3 21600 pixelWidth"/>
<v:f eqn=3D"prod @3 21600 pixelHeight"/>
<v:f eqn=3D"sum @0 0 1"/>
<v:f eqn=3D"prod @6 1 2"/>
<v:f eqn=3D"prod @7 21600 pixelWidth"/>
<v:f eqn=3D"sum @8 21600 0"/>
<v:f eqn=3D"prod @7 21600 pixelHeight"/>
<v:f eqn=3D"sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok=3D"f" gradientshapeok=3D"t" o:connecttype=3D"rect"/>
<o:lock v:ext=3D"edit" aspectratio=3D"t"/>
</v:shapetype><v:shape id=3D"_x0000_i1025" type=3D"#_x0000_t75" style=3D'wi=
dth:373.5pt;
height:16.5pt'>
<v:imagedata src=3D"file7231.files/image001.gif" o:title=3D"BD21303_"/>
</v:shape><![endif]--><![if !vml]><img width=3D498 height=3D22
src=3D"file7231.files/image001.gif" v:shapes=3D"_x0000_i1025"><![endif]><o:=
p></o:p></span></p>
<h3><span style=3D'font-family:SimSun;mso-ascii-font-family:Arial;mso-hansi=
-font-family:
Arial'>目的</span><span lang=3DEN-US>(Intent)</span><span lang=
=3DEN-US
style=3D'mso-fareast-language:ZH-TW'><o:p></o:p></span></h3>
<p class=3DMsoNormal style=3D'text-indent:27.0pt;mso-char-indent-count:2.25=
'><span
style=3D'font-family:SimSun;mso-ascii-font-family:"Times New Roman";mso-han=
si-font-family:
"Times New Roman"'>工厂方法定义构=
建对象的接口;但是=
5753;子类别决定哪一个౲=
7;别构建实体对象</span><span
lang=3DEN-US style=3D'mso-fareast-font-family:SimSun'>(instantiate)</span><=
span
style=3D'font-family:SimSun;mso-ascii-font-family:"Times New Roman";mso-han=
si-font-family:
"Times New Roman"'>,工厂方法将构=
建实体对象委托</span><span
lang=3DEN-US style=3D'mso-fareast-font-family:SimSun'>(defer)</span><span
style=3D'font-family:SimSun;mso-ascii-font-family:"Times New Roman";mso-han=
si-font-family:
"Times New Roman"'>给子类别。<span
style=3D'color:navy'>《译注:因为ࢷ=
2;父类别并不知道要构&=
#24314;的对象实体是哪一=
010;子类别:因此将构建=
;对象的责任委托或者&#=
24310;迟到子类别才决定z=
90;》</span></span><span
lang=3DEN-US style=3D'mso-fareast-language:ZH-TW'><o:p></o:p></span></p>
<h3><span style=3D'font-family:SimSun;mso-ascii-font-family:Arial;mso-hansi=
-font-family:
Arial'>动机</span><span lang=3DEN-US>(Motivation)</span><span
lang=3DEN-US style=3D'mso-fareast-language:ZH-TW'><o:p></o:p></span></h3>
<p class=3DMsoNormal style=3D'text-indent:27.0pt;mso-char-indent-count:2.25=
'><span
style=3D'font-family:SimSun;mso-ascii-font-family:"Times New Roman";mso-han=
si-font-family:
"Times New Roman"'>框架</span><span lang=3DEN-US style=3D'mso-f=
areast-font-family:
SimSun'>(Framework)</span><span style=3D'font-family:SimSun;mso-ascii-font-=
family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>使用=
抽象类别取定义及维=
5252;对象彼此之间的关౿=
5;。框架同时负有为这&=
#20123;对象构建实体的责=
219;。</span><span
lang=3DEN-US style=3D'mso-fareast-language:ZH-TW'><o:p></o:p></span></p>
<p class=3DMsoNormal style=3D'text-indent:27.0pt;mso-char-indent-count:2.25=
'><span
style=3D'font-family:SimSun;mso-ascii-font-family:"Times New Roman";mso-han=
si-font-family:
"Times New Roman"'>假设有一个应用=
系统</span><span
lang=3DEN-US style=3D'mso-fareast-font-family:SimSun'>(application)</span><=
span
style=3D'font-family:SimSun;mso-ascii-font-family:"Times New Roman";mso-han=
si-font-family:
"Times New Roman"'>的框架可以显示=
各种文件</span><span
lang=3DEN-US style=3D'mso-fareast-font-family:SimSun'>(document)</span><span
style=3D'font-family:SimSun;mso-ascii-font-family:"Times New Roman";mso-han=
si-font-family:
"Times New Roman"'>给使用端;这个=
框架可以抽取出两个=
0027;要类别:一个是应ஷ=
2;程序类别</span><span
lang=3DEN-US style=3D'mso-fareast-font-family:SimSun'>(application)</span><=
span
style=3D'font-family:SimSun;mso-ascii-font-family:"Times New Roman";mso-han=
si-font-family:
"Times New Roman"'>;一个是文件别=
</span><span
lang=3DEN-US style=3D'mso-fareast-font-family:SimSun'>(document)</span><span
style=3D'font-family:SimSun;mso-ascii-font-family:"Times New Roman";mso-han=
si-font-family:
"Times New Roman"'>。这两个类别都=
是抽象的</span><span
lang=3DEN-US style=3D'mso-fareast-font-family:SimSun'>(abstract)</span><span
style=3D'font-family:SimSun;mso-ascii-font-family:"Times New Roman";mso-han=
si-font-family:
"Times New Roman"'>;使用端</span><span lang=3DEN-US
style=3D'mso-fareast-font-family:SimSun'>(clients)</span><span style=3D'fon=
t-family:
SimSun;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times=
New Roman"'>必须继承自这两ߑ=
0;类别以了解其如何去&=
#23454;作应用系统的关连</sp=
an><span
lang=3DEN-US style=3D'mso-fareast-font-family:SimSun'>(application-specific=
)</span><span
style=3D'font-family:SimSun;mso-ascii-font-family:"Times New Roman";mso-han=
si-font-family:
"Times New Roman"'>文件<span style=3D'color:navy'>《ť=
93;注:也就是与应用程=
序相对可以处理的数=
5454;型态》</span>。例如我们=
;建立的是一个绘图系&#=
32479;;我们定义一个绘Þ=
70;应用系统</span><span
lang=3DEN-US style=3D'mso-fareast-font-family:SimSun'>(DrawingApplication)<=
/span><span
style=3D'font-family:SimSun;mso-ascii-font-family:"Times New Roman";mso-han=
si-font-family:
"Times New Roman"'>及一个图形文件=
</span><span
lang=3DEN-US style=3D'mso-fareast-font-family:SimSun'>(DrawingDocument)</sp=
an><span
style=3D'font-family:SimSun;mso-ascii-font-family:"Times New Roman";mso-han=
si-font-family:
"Times New Roman"'>。</span><span lang=3DEN-US style=3D'mso-fareast-f=
ont-family:
SimSun'>,</span><span style=3D'font-family:SimSun;mso-ascii-font-family:"Ti=
mes New Roman";
mso-hansi-font-family:"Times New Roman"'>这个绘图&#=
24212;用系统负责管理文Ê=
14;即在需要时负责构建=
对象。</span><span
lang=3DEN-US style=3D'mso-fareast-language:ZH-TW'><o:p></o:p></span></p>
<p class=3DMsoNormal style=3D'text-indent:27.0pt;mso-char-indent-count:2.25=
'><span
style=3D'font-family:SimSun;mso-ascii-font-family:"Times New Roman";mso-han=
si-font-family:
"Times New Roman"'>因为个别文件子=
类别的实体构建是属=
0110;应用系统关连</span><span
lang=3DEN-US style=3D'mso-fareast-font-family:SimSun'>(application-specific=
)</span><span
style=3D'font-family:SimSun;mso-ascii-font-family:"Times New Roman";mso-han=
si-font-family:
"Times New Roman"'>;因系统无法事=
先知道哪一个文件的=
3376;类别要被构建实体ᦂ=
7;他只知道何时一个新&=
#30340;文件对象要被构建A=
307;但不知道所要构建的=
;是哪一类文件对象。&#=
27492;时有个问题就是这È=
10;框架必须为一个类别=
构建对象实体;但他=
1482;知道他的抽象类别ᦂ=
7;而抽象类别是无法构&=
#24314;对象实体的。</span><span
lang=3DEN-US style=3D'mso-fareast-language:ZH-TW'><o:p></o:p></span></p>
<p class=3DMsoBodyTextIndent><span style=3D'font-family:SimSun;mso-ascii-fo=
nt-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>工厂=
方法样式提供一个解=
0915;方式。他封装哪一ߑ=
0;文件对象必须构建的&=
#30693;识并且将这这个知#=
782;移出框架。</span><span
lang=3DEN-US style=3D'mso-fareast-language:ZH-TW'><o:p></o:p></span></p>
<p class=3DMsoBodyTextIndent><!--[if gte vml 1]><v:shape id=3D"_x0000_s1029"
type=3D"#_x0000_t75" style=3D'position:absolute;left:0;text-align:left;
margin-left:0;margin-top:0;width:414pt;height:153pt;z-index:3;
mso-position-horizontal:center' stroked=3D"t" strokeweight=3D"1.25pt">
<v:imagedata src=3D"file7231.files/image002.emz" o:title=3D""/>
</v:shape><![endif]--><![if !vml]><span style=3D'mso-ignore:vglayout;positi=
on:
relative;z-index:3'><span style=3D'left:0px;position:absolute;left:0px;
top:-2px;width:556px;height:208px'><img width=3D556 height=3D208
src=3D"file7231.files/image003.gif" v:shapes=3D"_x0000_s1029"></span></span=
><![endif]><span
lang=3DEN-US style=3D'mso-fareast-language:ZH-TW'><o:p> </o:p></span><=
/p>
<p class=3DMsoBodyTextIndent><span lang=3DEN-US style=3D'mso-fareast-langua=
ge:ZH-TW'><o:p> </o:p></span></p>
<p class=3DMsoBodyTextIndent><span lang=3DEN-US style=3D'mso-fareast-langua=
ge:ZH-TW'><o:p> </o:p></span></p>
<p class=3DMsoBodyTextIndent><span lang=3DEN-US style=3D'mso-fareast-langua=
ge:ZH-TW'><o:p> </o:p></span></p>
<p class=3DMsoBodyTextIndent><span lang=3DEN-US style=3D'mso-fareast-langua=
ge:ZH-TW'><o:p> </o:p></span></p>
<p class=3DMsoBodyTextIndent><span lang=3DEN-US style=3D'mso-fareast-langua=
ge:ZH-TW'><o:p> </o:p></span></p>
<p class=3DMsoBodyTextIndent><span lang=3DEN-US style=3D'mso-fareast-langua=
ge:ZH-TW'><o:p> </o:p></span></p>
<p class=3DMsoBodyTextIndent><span lang=3DEN-US style=3D'mso-fareast-langua=
ge:ZH-TW'><o:p> </o:p></span></p>
<p class=3DMsoBodyTextIndent><span lang=3DEN-US style=3D'mso-fareast-langua=
ge:ZH-TW'><o:p> </o:p></span></p>
<br style=3D'mso-ignore:vglayout' clear=3DALL>
<p class=3DMsoNormal style=3D'text-indent:27.0pt;mso-char-indent-count:2.25=
'><span
style=3D'font-family:SimSun;mso-ascii-font-family:"Times New Roman";mso-han=
si-font-family:
"Times New Roman"'>应用系统子类别=
重新定义一个抽象的=
2302;构建文件的操作</span><span
lang=3DEN-US style=3D'mso-fareast-font-family:SimSun'>(CreateDocument opera=
tion)</span><span
style=3D'font-family:SimSun;mso-ascii-font-family:"Times New Roman";mso-han=
si-font-family:
"Times New Roman"'>』;这个构建文=
件的操作传回符合需=
7714;的文件子类别。只ව=
1;一个应用系统子类别&=
#34987;构建实体对象;他=
516;时也可以构建相关的=
;文件实体对象而无须&#=
30693;道文件的类别。此ą=
02;我们称『构建文件的=
操作』为一个工厂方=
7861;;因为他的责任就਷=
9;制造对象。</span><span
lang=3DEN-US style=3D'mso-fareast-language:ZH-TW'><o:p></o:p></span></p>
<h3><span style=3D'font-family:SimSun;mso-ascii-font-family:Arial;mso-hansi=
-font-family:
Arial'>适用性</span><span lang=3DEN-US>(Applicability)</s=
pan><span
lang=3DEN-US style=3D'mso-fareast-language:ZH-TW'><o:p></o:p></span></h3>
<p class=3DMsoNormal style=3D'margin-left:18.0pt;tab-stops:list 36.0pt'><sp=
an
lang=3DEN-US style=3D'mso-fareast-language:ZH-TW'><!--[if gte vml 1]><v:sha=
pe id=3D"_x0000_i1026"
type=3D"#_x0000_t75" style=3D'width:9pt;height:9pt' o:bullet=3D"t">
<v:imagedata src=3D"file7231.files/image004.gif" o:title=3D"BD10300_"/>
</v:shape><![endif]--><![if !vml]><img width=3D12 height=3D12
src=3D"file7231.files/image004.gif" alt=3D"*" v:shapes=3D"_x0000_i1026"><![=
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -