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

一、创建模式

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值