一、创建模式
<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">
工厂<销货员> |
具体产品<苹果、梨> |
抽象产品<水果> |
<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">
工厂<销货员> |
具体产品<苹果、梨> |
抽象产品<水果> |
学习中......
<o:p> </o:p>
<o:p> </o:p>
<o:p> </o:p>