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

对java中的接口和实现类的深入理解

2016-04-28 22:13 916 查看
由DBhandle总结::

首先自己先创建自己的接口行为:

package cn.nentouch.interfacehandle;

public interface interfacerun {

//定义接口的行为
public void run();

}
2:定义自己的实现类

package cn.nentouch.interfacehandle;

public class ManRun implements interfacerun {

@Override
public void run() {
System.out.println("男人再跑");

}

}


package cn.nentouch.interfacehandle;

public class FamleRun implements interfacerun {
//不同的实现类
@Override
public void run() {
System.out.println("女人再跑");

}

}


第三步:创建一个提供访问接口的一个creator制造者类。(和添加初始化参数的观察者接口)

package cn.nentouch.interfacehandle;

import java.util.HashMap;
import java.util.Map;

import cn.touch.params.InitParams;

public class RunCreator implements InitParams{
private static Map<runTypes, Map<String, String>> runClassPath = new HashMap<runTypes, Map<String, String>>();
private static  RunCreator creator=null;
private static runTypes runtype=null;
//提供获得实际类的方法
public  interfacerun getinterfacerun() throws ClassNotFoundException{
return getinterfacerun(runtype);
}
private interfacerun getinterfacerun(runTypes runtype2) throws ClassNotFoundException {
//首先判断传入的参数:
try {
return 	 (interfacerun) Class.forName(runClassPath.get(runtype2).get("runhandle")).newInstance();
} catch (InstantiationException | IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
//构造函数:private 修饰只能本类中new对象
private RunCreator(){
//第一步首先添加初始化参数
loadinitparams();
}
//创建对象
public static RunCreator  getruncreatorstance(){
if(creator==null){
creator=new RunCreator();
}
return creator;

}
//加载初始化参数
@Override
public void loadinitparams() {
//初始化参数的主要作用就是将其实现类的全类名放在map中:
String basepath="sn.nentouch.interfacehandle.";
Map<String,String> manrun=new HashMap<String,String>();
manrun.put("runhandle",basepath+"ManRun");
Map<String,String> famalerun=new HashMap<String,String>();
famalerun.put("runhandle",basepath+"FamleRun");
runClassPath.put(runTypes.man,manrun);
runClassPath.put(runTypes.femal,famalerun);
//最后将想要的类型提前声明
runtype=runTypes.man;
}

}
//测试类
public class RunTest {

public static void main(String[] args) throws ClassNotFoundException {

RunCreator creator=	RunCreator.getruncreatorstance();

//创建实例
interfacerun run= creator.getinterfacerun();

run.run();
}


输出结果:原因
runtype=runTypes.man;设置的枚举类型是男人,得到男人的实例,所以男人再跑


男人再跑
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: