JAVA 工厂模式简单例子
来源:互联网 发布:想开淘宝女装店 编辑:程序博客网 时间:2024/05/16 05:04
现给出一简单用例,模拟一火腿(Ham)生产工厂,工厂可以生产数种类型的Ham,那么在创建了一个工厂实例后,只需要告诉它请你生产何种Ham,它就会给你生产出来:
package test;
interface Ham { //定义接口,用于辅助实现工厂模式
void show();//由Ham工厂生产出的各种Ham将有show()的能力
}
public class FatoryModule {//工厂类,用于产品多种不同种类的Ham
public Ham getHam(String HamType) throws Exception{//工厂类对象生产Ham的动作
if (HamType.equals("HamA")) {
return new HamA();
}
else if (HamType.equals("HamB")) {
return new HamB();
}
else if (HamType.equals("HamC")) {
return new HamC();
}
else
throw new Exception();//如果该工厂收到生产某种Ham的指令但暂不支持,则抛出异常
}
public static void main(String[] args) {//测试代码
FatoryModule fatorymodule = new FatoryModule();
try {
Ham myHam = fatorymodule.getHam("HamB");//可以方便地创建各种类型的Ham,而程序结构和代码的修改量达到最小
myHam.show();
} catch (Exception ex) {
ex.printStackTrace();//应进一步处理异常
}
}
}
class HamA implements Ham { //工厂中生产的一种产品HamA
public void show() {
System.out.println("You got a HamA.");
}
}
class HamB implements Ham { //工厂生产的另一种产品HamB
public void show() {
System.out.println("You got a HamB.");
}
}
class HamC implements Ham { //工厂生产的第三种产品HamC
public void show() {
System.out.println("You got a HamC.");
}
}
通过程序的演示我得到了以下结论:
由于应用了工厂模式,我只需要告诉工厂对象给我生产一种什么样的Ham(即getHam()方法中的参数),便可以得到此类Ham,而不用写HamX hamX=new HamX(); 要是有数十种不同的Ham对象需要在程序的不同地方被创建,那么使用工厂模式代码将显得简单而统一,每个需要不同Ham的地方仅是getHam()的参数不同。否则程序一旦需要扩展和维护,数十处的new语句将让人头痛。而如果需要添加新的Ham类型,只需要在工厂类中添加即可。
- JAVA 工厂模式简单例子
- java 工厂模式简单介绍及例子
- 例子说明java中的简单工厂模式
- 简单工厂模式的java实现例子
- 简单工厂模式例子
- java va中工厂模式( 静态工厂模式、工厂方法模式、抽象工厂模式)的介绍以及简单例子
- 工厂模式的简单例子
- 简单工厂模式、工厂模式和抽象工厂模式例子
- Java的工厂模式例子
- Java 简单工厂模式
- java 简单工厂模式
- 简单工厂模式--Java
- Java简单工厂模式
- Java简单工厂模式
- java简单工厂模式
- java 简单工厂模式
- java 简单工厂模式
- java简单工厂模式
- 【数据挖掘概念与技术】学习笔记6-挖掘频繁模式、关联和相关性:基本概念和方法(编缉中)
- [未解决]数据库异常:多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。
- Android 4.4 Kitkat 编译时对于存储器挂载方式的修改,以泛泰820,860为例
- java 简单的单例模式 例子
- javascript基础
- JAVA 工厂模式简单例子
- 自增运算符
- Java 单例模式探讨
- ssh基本资料
- cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
- LeetCode题解:Insertion Sort List
- Android 应用开发 之使用LruCache和DiskLruCache来在内存和SD卡中缓存图片
- vim中copy或者delete的技巧
- LeetCode 之 Minimum Depth of Binary Tree