分享

(五) 实现简单工厂

 蹇胜雄 2015-07-09

--------------------------------------------------------------------

配置文件config.properties的内容
appSet = am.ClassB
-------------------------------------------------------------------
package com;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

/**
 *需求:实现简单工厂模式
 *实现要点:通过读取配置文件的信息动态创建对象 
 *实现步骤:1.编写properties文件存储配置信息
 *        2.编写产品接口
 *        3.编写两个实现接口的类
 *        4.编写简单工厂生产产品
 *        5.编写测试类
 */
//产品接口
interface InterfaceBase{
void fun1();
void fun2();
}
//第一个实现接口的类
class ClassA implements InterfaceBase{
public void fun1(){
System.out.println("这是ClassA的fun1方法");
}
public void fun2(){
System.out.println("这是ClassA的fun2方法");
}
}
//第二个实现接口的类
class ClassB implements InterfaceBase{
public void fun1(){
System.out.println("这是ClassB的fun1方法");
}
public void fun2(){
System.out.println("这是ClassB的fun2方法");
}
}
//编写工厂类
class SimpleFactory{
//读取配置文件的信息
private static String getConfigInfo(){
String typeName = "";
Properties p = new Properties();
try {
p.load(new FileInputStream("config.properties"));
typeName = p.getProperty("appSet");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return typeName;
}
//工厂方法,创建不同的产品,但产品有相同的规范
public static InterfaceBase createProduct(){
InterfaceBase obj = null;
String className = SimpleFactory.getConfigInfo();
try {
obj = (InterfaceBase)Class.forName(className).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return obj;
}
}
//测试工厂类
public class Example03 {
public static void main(String[] args) {
InterfaceBase obj = SimpleFactory.createProduct();
obj.fun1();
obj.fun2();
}
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多