設計模式學習筆記一:簡單工廠模式

一、創建模式

<o:p> </o:p>

創建模式分爲類的創建模式和對象的創建模式兩種:

1、  類的創建模式:類的創建模式使用繼承關係,把類的創建延遲到子類,從而封裝了客戶端將得到哪些具體類的信息,並且隱藏了這些類的實例是如何被創建和放在一起的。

2、  對象的創建模式:而對象的創建模式則把對象的創建過程動態地委派給另一個對象,從而動態地決定客戶端將得到哪些具體類的實例,以及這些類的實例是如何被創建和組合在一起的。

<o:p> </o:p>

A、 簡單工廠模式Simple Factory<Static Factory Method靜態工廠方法><o:p></o:p>

<o:p> </o:p>

       簡單工廠模式就是由一個工廠類根據傳入的參量決定創建出哪一種產品類的實例。

       實例:      

       商店-----------à銷貨員[工廠] -----------à水果[抽象產品]<蘋果[產品一]、梨[產品二]、草莓[產品三]><o:p></o:p>

<o:p>       用戶告訴銷貨員水果的名稱,銷貨員通過水果名稱找到相應的水果;</o:p>

       interface水果 (){

              價格;

              重量;

              產地;

}

Class蘋果() implements 水果{

              蘋果價格;

              蘋果重量;

              蘋果產地;

              蘋果品種;

       蘋果採摘日期;

}

Class () implements 水果{

       梨價格;

       梨重量;

       梨產地;

       梨品種;

       含糖量;

       梨採摘日期;

}

Class 草莓() implements 水果{

       草莓價格;

       草莓重量;

       草莓品種;

       ……

       草莓採摘日期;

}

Class shop<銷貨員>(){

//創建靜態工廠

Public static 水果 factory(String 水果名稱) throws 水果未存在異常{

                     If(“蘋果”.equals(水果名稱)){

                            Return new 蘋果();

}else If(“”.equals(水果名稱)){

              Return new ();

}else If(“草莓”.equals(水果名稱)){

              Return 草莓();

}else{

              Throw 水果未存在異常;

}

}    

}

<o:p> </o:p>

獲取水果:

<o:p> </o:p>

Try{

       蘋果 A = Shop<銷貨員>.factory(“蘋果”);

       A = Shop<銷貨員>.factory(“”);

}catch(Exception e){

       System.out.println(“水果未存在異常……”);

}

<o:p> </o:p>

結構圖:

<o:p> </o:p>

<v:group id="_x0000_s1026" style="MARGIN-TOP: 0px; Z-INDEX: 1; LEFT: 0px; MARGIN-LEFT: 1in; WIDTH: 4in; POSITION: absolute; HEIGHT: 109.2pt; TEXT-ALIGN: left" coordorigin="1980,9552" coordsize="5580,2340"><v:group id="_x0000_s1027" style="LEFT: 1980px; WIDTH: 5580px; POSITION: absolute; TOP: 9552px; HEIGHT: 2340px" coordorigin="1980,9552" coordsize="5580,2340"><v:shapetype id="_x0000_t202" coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe"><v:stroke joinstyle="miter"></v:stroke><v:path gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><v:shape id="_x0000_s1028" style="LEFT: 1980px; WIDTH: 1440px; POSITION: absolute; TOP: 9552px; HEIGHT: 468px; mso-position-horizontal: absolute; mso-position-vertical: absolute" type="#_x0000_t202"><v:textbox style="mso-next-textbox: #_x0000_s1028">

工廠<銷貨員>

</v:textbox></v:shape><v:shape id="_x0000_s1029" style="LEFT: 5220px; WIDTH: 2340px; POSITION: absolute; TOP: 9552px; HEIGHT: 468px; mso-position-horizontal: absolute; mso-position-vertical: absolute" type="#_x0000_t202"><v:textbox style="mso-next-textbox: #_x0000_s1029">

具體產品<蘋果、梨>

</v:textbox></v:shape><v:shape id="_x0000_s1030" style="LEFT: 5445px; WIDTH: 1980px; POSITION: absolute; TOP: 11424px; HEIGHT: 468px; mso-position-horizontal: absolute; mso-position-vertical: absolute" type="#_x0000_t202"><v:textbox style="mso-next-textbox: #_x0000_s1030">

抽象產品<水果>

</v:textbox></v:shape></v:group><v:line id="_x0000_s1031" style="POSITION: absolute; mso-position-horizontal: absolute; mso-position-vertical: absolute" coordsize="21600,21600" from="3420,9783" to="5220,9783" strokeweight="1pt"><v:stroke dashstyle="1 1" endarrow="block" endcap="round"></v:stroke></v:line><v:line id="_x0000_s1032" style="POSITION: absolute; mso-position-vertical: absolute" coordsize="21600,21600" from="6300,10023" to="6300,11427"><v:stroke endarrow="block"></v:stroke></v:line><w:wrap type="square"></w:wrap></v:group>

<o:p> <v:group id="_x0000_s1032" style="MARGIN-TOP: 467.1pt; Z-INDEX: 1; LEFT: 0px; MARGIN-LEFT: 144.75pt; WIDTH: 4in; POSITION: absolute; HEIGHT: 109.2pt; TEXT-ALIGN: left" coordorigin="1980,9552" coordsize="5580,2340"> <v:group id="_x0000_s1033" style="LEFT: 1980px; WIDTH: 5580px; POSITION: absolute; TOP: 9552px; HEIGHT: 2340px" coordorigin="1980,9552" coordsize="5580,2340"><v:shapetype id="_x0000_t202" coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe"><v:stroke joinstyle="miter"></v:stroke><v:path gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><v:shape id="_x0000_s1034" style="LEFT: 1980px; WIDTH: 1440px; POSITION: absolute; TOP: 9552px; HEIGHT: 468px; mso-position-horizontal: absolute; mso-position-vertical: absolute" type="#_x0000_t202"><v:textbox style="mso-next-textbox: #_x0000_s1034">

工廠<銷貨員>

</v:textbox></v:shape><v:shape id="_x0000_s1035" style="LEFT: 5220px; WIDTH: 2340px; POSITION: absolute; TOP: 9552px; HEIGHT: 468px; mso-position-horizontal: absolute; mso-position-vertical: absolute" type="#_x0000_t202"><v:textbox style="mso-next-textbox: #_x0000_s1035">

具體產品<蘋果、梨>

</v:textbox></v:shape><v:shape id="_x0000_s1036" style="LEFT: 5445px; WIDTH: 1980px; POSITION: absolute; TOP: 11424px; HEIGHT: 468px; mso-position-horizontal: absolute; mso-position-vertical: absolute" type="#_x0000_t202"><v:textbox style="mso-next-textbox: #_x0000_s1036">

抽象產品<水果>

</v:textbox></v:shape></v:group><v:line id="_x0000_s1037" style="POSITION: absolute; mso-position-horizontal: absolute; mso-position-vertical: absolute" coordsize="21600,21600" from="3420,9783" to="5220,9783" strokeweight="1pt"><v:stroke dashstyle="1 1" endarrow="block" endcap="round"></v:stroke></v:line><v:line id="_x0000_s1038" style="POSITION: absolute; mso-position-vertical: absolute" coordsize="21600,21600" from="6300,10023" to="6300,11427"><v:stroke endarrow="block"></v:stroke></v:line><w:wrap type="square"></w:wrap></v:group></o:p>

學習中......

<o:p> </o:p>

<o:p> </o:p>

<o:p> </o:p>

 

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