`
wyz191
  • 浏览: 93392 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

设计模式学习笔记一:简单工厂模式

阅读更多

一、创建模式

<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>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics