软件设计模型之抽象工厂模式(Java实现)
2014-06-11 19:06
387 查看
抽象工厂方法
抽象工厂方法适合用于多种类多系列产品
现有三种产品:Phone,Watch,Pad
分别由三家公司:Apple,Sunsng,小米
public abstract class AbstractFactory {
public abstract AbstractPhone getPhone();
public abstract AbstractWatch getWatch();
public abstract AbstractPad getPad();
public static AbstractFactory getFactory(String brand)
{
AbstractFactory f=null;
if(brand.equals(AbstractFactory.IFACTORY)){f=new Factory_Apple();}
else if(brand.equals(AbstractFactory.MIFACTORY)){f=new Factory_Xiaomi();}
else if(brand.equals(AbstractFactory.SUNFACTORY)){f=new Factory_Samsung();}
return f;
}
(2)具体工厂类(以苹果为例)
public class Factory_Apple extends AbstractFactory {
//实现抽象工厂的抽象方法产生产品对象
@Override
public AbstractPhone getPhone() {
return new IPhone();
}
@Override
public AbstractWatch getWatch() {
return new IWatch();
}
@Override
public AbstractPad getPad() {
return new IPad();
}
}
(3)抽象产品类(以Phone为例)
public interface AbstractPhone {
public String getPhoneInfo();
}
(4)具体产品类(以IPhone为例)
public class IPhone implements AbstractPhone {
private String descrision="Iphone :This time, everything is possible";
@Override
public String getPhoneInfo() {
return descrision;
}}
(5)Client类
AbstractFactory bf=AbstractFactory.getFactory(brand);//指定品牌
if(product.equals("手机")){
AbstractPhone ph=bf.getPhone();info=ph.getPhoneInfo(); //指定种类}
else if(product.equals("平板")){AbstractPad pd=bf.getPad(); info=pd.getPadInfo();
else if(product.equals("手表")){AbstractWatch wh=bf.getWatch(); info=wh.getWatchInfo();
抽象工厂方法适合用于多种类多系列产品
现有三种产品:Phone,Watch,Pad
分别由三家公司:Apple,Sunsng,小米
UML设计图
核心实现代码
(1)抽象工厂类public abstract class AbstractFactory {
public abstract AbstractPhone getPhone();
public abstract AbstractWatch getWatch();
public abstract AbstractPad getPad();
public static AbstractFactory getFactory(String brand)
{
AbstractFactory f=null;
if(brand.equals(AbstractFactory.IFACTORY)){f=new Factory_Apple();}
else if(brand.equals(AbstractFactory.MIFACTORY)){f=new Factory_Xiaomi();}
else if(brand.equals(AbstractFactory.SUNFACTORY)){f=new Factory_Samsung();}
return f;
}
(2)具体工厂类(以苹果为例)
public class Factory_Apple extends AbstractFactory {
//实现抽象工厂的抽象方法产生产品对象
@Override
public AbstractPhone getPhone() {
return new IPhone();
}
@Override
public AbstractWatch getWatch() {
return new IWatch();
}
@Override
public AbstractPad getPad() {
return new IPad();
}
}
(3)抽象产品类(以Phone为例)
public interface AbstractPhone {
public String getPhoneInfo();
}
(4)具体产品类(以IPhone为例)
public class IPhone implements AbstractPhone {
private String descrision="Iphone :This time, everything is possible";
@Override
public String getPhoneInfo() {
return descrision;
}}
(5)Client类
AbstractFactory bf=AbstractFactory.getFactory(brand);//指定品牌
if(product.equals("手机")){
AbstractPhone ph=bf.getPhone();info=ph.getPhoneInfo(); //指定种类}
else if(product.equals("平板")){AbstractPad pd=bf.getPad(); info=pd.getPadInfo();
else if(product.equals("手表")){AbstractWatch wh=bf.getWatch(); info=wh.getWatchInfo();
相关文章推荐
- ThroughoutCMS技术共享系列(3):三维的权限抽象模型-PK访问控制设计的软件实现
- 设计模式之第2章-抽象工厂模式(Java实现)
- 设计模式之—抽象工厂模式(Abstract Factory)-Java实现
- 23种经典设计模式的java实现_1_抽象工厂模式
- SP服务商Java短信平台的软件模型和实现(吴宏杰,赵雷,杨季文,苏州大学计算机科学和技术学院)
- Java swing sqlserver实现的桌面通讯录小软件设计实现与项目源码
- 设计一条简单的等待工作队列之软件模型设计与实现(一)
- 23种经典设计模式的java实现_1_抽象工厂模式
- java语言实现创建型设计模式—抽象工厂模式
- 设计一条简单的等待工作队列之软件模型设计与实现(三)
- Java swing sqlserver实现的桌面通讯录小软件设计实现与项目源码
- 设计模式之抽象工厂模式(Java实现)
- 软件体系结构上机实验 面向对象体系结构风格的 KWIC 关键词索引系统设计与实现 java
- Java设计模式菜鸟系列(五)抽象工厂模式建模与实现
- Netty学习之旅------线程模型前置篇Reactor反应堆设计模式实现(基于java.nio)
- 设计一条简单的等待工作队列之软件模型设计与实现(二)
- 时间和日历类的设计(Java的Date和Calendar的C++实现)
- Samba 文件服务器用户复杂权限模型设计和实现 v0.1b
- I/O流的设计(Java的InputStream/OuputStream和Reader/Writer的C++实现)
- AIX 程序设计大赛-AIX正方形问题算法及Java程序实现