简单工厂模式的例子
程序员文章站
2022-05-28 18:03:03
...
本示例简单的实现了工厂模式,请参见如下代码是如何实现的
/* * @(#) TestMain.java 1.0 2011-7-22 * * (c) Copyright 2011 smshen factoryDemo * * FILENAME : TestMain.java * PACKAGE : com.smshen.factory.test * CREATE DATE : 2011-7-22 * AUTHOR : smshen */ package com.smshen.factory.test; import java.util.Properties; import com.smshen.factory.fruit.IFruit; import com.smshen.factory.fruitfactory.FruitFactory; import com.smshen.factory.util.LoadPropertyFile; /******************************************************************************* * #(c) smshen factoryDemo * * 功能说明: 测试类 * 2011-7-22 下午2:56:55 smshen 创建文件 * * 修改说明: 创建文件 * 2011-7-22 下午2:56:55 smshen 修改文件 * ******************************************************************************/ public class TestMain { /** * 功能 :主方法 * 开发:smshen 2011-7-22 * @param args */ public static void main(String[] args) { //properties文件存放位置 String path = "D:/project/study/eclipse/workspace/factoryDemo/src/fruit.properties"; Properties properties = LoadPropertyFile.getProperties(path); IFruit fruit = null; fruit = (IFruit) FruitFactory.getInstance(properties.getProperty("apple")); fruit.eat(); } }
/*
* @(#) FruitFactory.java 1.0 2011-7-22 * * (c) Copyright 2011 smshen factoryDemo * * FILENAME : FruitFactory.java * PACKAGE : com.smshen.factory.fruitfactory * CREATE DATE : 2011-7-22 * AUTHOR : smshen */ package com.smshen.factory.fruitfactory; /******************************************************************************* * #(c) smshen factoryDemo * * 功能说明: 水果工厂类 * 2011-7-22 下午2:51:22 smshen 创建文件 * * 修改说明: 创建文件 * 2011-7-22 下午2:51:22 smshen 修改文件 * ******************************************************************************/ public class FruitFactory { /** * * 功能 :利用反射生成一个类的实例 * 开发:smshen 2011-7-27 * @param className 类路径名称 * @return Object 实例 */ public static Object getInstance(String className) { Object obj = null; try { obj = Class.forName(className).newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return obj; } }
还有几个类的代码没有贴出来,我将代码打包请大家自行下载吧!
上一篇: BUG(跑SLAM14-ch9)
下一篇: 反射动态获取和设置对象的值 反射