您的位置:首页 > 编程语言 > Java开发

学习反射机制 - 工厂模式

2015-02-26 15:17 260 查看
初学反射机制,看到网上有一篇文章关于java反射详解,链接为java反射详解-博客园

自己动手敲一遍代码,增强记忆。

首先介绍下反射机制:简单的来说,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字(还得有包名), 那么就可以通过反射机制来获得类的所有信息。 

其次回顾一下工厂模式,大体情况如下:

抽象类 - Person:

package imeng.reflect.business;

/**
* 工厂模式的接口
* @author IMeng
*/
public interface Person {

public abstract void sex();
}
实现类 - Man:
/**
* 实现Person类
* @author IMeng
*/
public class Man implements Person {

@Override
public void sex() {
System.out.println("Man");
}
}

实现类 - Woman:

/**
* 实现Person类
* @author IMeng
*/
public class Woman implements Person {

@Override
public void sex() {
System.out.println("Woman");
}
}
工厂类 :
package imeng.reflect.controller;

import imeng.reflect.business.*;

/**
* 传统工厂模式,如果需要再添加子类,就需要再增加判断,子类越多,改的就越多
* @author IMeng
*/
public class Factory {

public static Person getInstance(String personType){

if("woman".equals(personType)){
return new Woman();
}else if("man".equals(personType)){
return new Man();
}else{
return null;
}
}
}
使用反射机制的工厂类 :
package imeng.reflect.controller;

import imeng.reflect.business.Person;

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

/**
* 利用反射机制,配置文件的工厂模式
* @author IMeng
*/
public class ReflectFactory {

/**
* 获取配置文件,如果不存在会自动生成
* @return
* @throws FileNotFoundException
* @throws IOException
*/
public static Properties getPro() throws FileNotFoundException, IOException {
Properties pro = new Properties();
String fileName = "person.properties";
File file = new File( fileName );
if (file.exists()) {
pro.load(new FileInputStream(file));
} else {
System.out.println("配置文件不存在,配置文件为:"+ fileName);
}
return pro;
}

/**
* 工厂模式改造
* 如果有新的子类需要添加,只要在配置文件中增加就可以了。
* @param className
* @return
*/
public static Person getInstance(String className){
Person person = null;
try{
person = (Person)Class.forName(className).newInstance();
}catch(Exception e){
e.printStackTrace();
}
return person;
}

}<em>
</em>源码下载地址:百度云盘
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 工厂模式 反射