欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

简单工厂模式的例子

程序员文章站 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;
	}
}

 

还有几个类的代码没有贴出来,我将代码打包请大家自行下载吧!

 

相关标签: 工厂 反射