博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
框架 小编搭建
阅读量:5918 次
发布时间:2019-06-19

本文共 2913 字,大约阅读时间需要 9 分钟。

其实所谓的框架就是通过一些配置文件来将需要运行的模块以及类、方法在软件启动的时候自动运行。如果将需要运行类以及模块配置在文件中那么便于后期的一个维护。

 

1.创建一个配置文件如下

 1 class=Service.UserService

2 method=autoRun

3 value=唐僧,孙悟空  

2.    创建两个实现接口的服务类
1  2 UserService.java 3 public class UserService implements Service{ 4    // 提供自动运行的方法 5     public void autoRun(String names){ 6         // 使用,号切割用户列表 7         String [] ns = names.split(","); 8         // 遍历 9         for(String name:ns){10             System.out.println("姓名: "+name);11         }12     } 13 }14 StartService.java15 public class StartService implements Service {16    // 提供自动运行的方法17     public void autoRun(String names){18         // 使用,号切割用户列表19         String [] ns = names.split(",");20         // 遍历21         for(String name:ns){22             System.out.println(name);23         }24     } 25 }26 以上的两个类拥有共同的方法因此可以抽取为接口27 Service.java28 public interface Service {29     // 提供自动运行的方法30     public abstract void autoRun(String names);31 }

3.直接编写一个Main.java进行逻辑处理

1     public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException { 2         Properties properties=new Properties(); 3         properties.load(new BufferedReader(new FileReader(new File("configure.ini")))); 4         String str_class=(String) properties.getProperty("class"); 5         String str_method=(String)properties.getProperty("method"); 6         String str_value=(String)properties.getProperty("value"); 7         System.out.println(str_class); 8         System.out.println(str_method); 9         System.out.println(str_value);10         for(Map.Entry e:properties.entrySet())11         {12             System.out.println(e.getKey()+"   "+e.getValue());13         }14         Class clazz=Class.forName(str_class);15         Constructor con = clazz.getConstructor();16         Service service=(Service) con.newInstance();17         Method method=clazz.getMethod(str_method,String.class);18         service.autoRun(str_value);19     }

参考人家的事例中文解释

1 public static void main(String[] args) throws Exception{ 2       // 1. 获取配置信息 3       Properties ps = new Properties(); 4       // 2. 装载文件数据 5       ps.load(new FileInputStream(new File("jnb.ini"))); 6       // 3. 获取数据 7       String str_clazz = ps.getProperty("run"); 8       String str_method = ps.getProperty("me"); 9       String str_value = ps.getProperty("value");10       // 4. 反射获取Class对象11       Class clazz = Class.forName(str_clazz);12       // 5. 创建对象13       Constructor con = clazz.getConstructor(null);14       Service service = (Service)con.newInstance(null);15       // 6. 调用相关的方法16       Method method = clazz.getMethod(str_method, String.class);17       method.invoke(service, str_value);18 }

 

这样的话就基本的实现了一个框架的模拟,大家以后就可以同配置文件的形式修改程序运行的服务类了。

转载于:https://www.cnblogs.com/friends-wf/p/3720521.html

你可能感兴趣的文章
Mac 下使用Ionic x86 emulation currently requires hardware acceleration 问题
查看>>
前端开发中Cookie那些事儿
查看>>
产品评价
查看>>
Java小细节
查看>>
[CodeForces-375E]Red and Black Tree
查看>>
matrix theory_basic results and techniques_exercise_1.2.10
查看>>
(转载)BPM 的介绍
查看>>
图片加载不出来 打入默认图片
查看>>
session、cache、cookie的区别
查看>>
android wifi Beacon帧解析
查看>>
简单描述如何安装配置一个apache开源版hadoop,只描述即可,无需列出完整步骤,能列出步骤更好...
查看>>
【LaTeX】配置Emacs org-mode利用latex生成pdf文件
查看>>
《1024伐木累》- 老王请客吃晚饭,介绍对象
查看>>
【题解】【排列组合】【回溯】【Leetcode】Gray Code
查看>>
iOS: (库) 图片异步下载/缓存-SDWebImage的使用
查看>>
MySql开启远程账户登陆总结
查看>>
node.js 简单的获取命令参数
查看>>
Xcode8注释快捷键以及相关插件使用无效解决方法
查看>>
论创业者心态心智
查看>>
HDU 4268 Alice and Bob(贪心+Multiset的应用)
查看>>