对java中的接口和实现类的深入理解
2016-04-28 22:13
916 查看
由DBhandle总结::
首先自己先创建自己的接口行为:
第三步:创建一个提供访问接口的一个creator制造者类。(和添加初始化参数的观察者接口)
输出结果:原因
男人再跑
首先自己先创建自己的接口行为:
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;设置的枚举类型是男人,得到男人的实例,所以男人再跑
男人再跑
相关文章推荐
- java 数字组合代码 按顺序,每组无重复,形成一个无重复的字符串
- Spring java-based configuration 配置transaction manager
- maven 学习---用Eclipse创建一个Maven Web项目
- 如何用java实现发邮件功能,并有几点注意事项
- springmvc(3)--数据类型转换
- Java 注解学习
- JAVA--简易聊天室程序
- Java多线程编程-线程池的使用
- springmvc(2)--参数绑定
- springmvc(1)--配置
- Java IO的操作
- Java编程入门:前言
- Java并发编程学习笔记 深入理解volatile关键字的作用
- 【Leetcode】:328. Odd Even Linked List 问题 in JAVA
- eclipse (mars版 )开源中国镜像 配置导致创建quickstart报错 【解决】
- Java 注解
- maven 学习---转换基于Maven的Web应用程序支持Eclipse IDE
- SpringMVC之注解
- maven 学习---Eclipse构建Maven项目
- java中常见的设计模式