学习反射机制 - 工厂模式

初学反射机制,看到网上有一篇文章关于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>
源码下载地址: 百度云盘


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值