• 框架 小编搭建


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

    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.java
    15 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.java
    28 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 }

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

  • 相关阅读:
    非确定的自动机NFA确定化为DFA--作业8
    正规式到正规文法与自动机--作业7
    正规文法与正规式--作业六
    词法分析程序的设计与实现--作业五
    文法和语文总结与梳理--作业4
    语法树,短语,直接短语,句柄--作业
    文法和语言--作业
    作业-编译原理概述
    js实现线性结构转树形结构(生成无限层级菜单)
    基于PriorityQueue(优先队列)解决TOP-K问题
  • 原文地址:https://www.cnblogs.com/friends-wf/p/3720521.html
Copyright © 2020-2023  润新知