请选择时期:
怀孕准备 怀孕 分娩 宝宝0-1岁 宝宝1-3岁 宝宝3-6岁

Java 插件工程开发的概念

来源: 最后更新:2022-04-03 16:58:27

导读:Java 插件工程开发的概念,假设一个photoshop工程,对照片可以有很多种风格效果的装饰,有一些装饰效果photoshop开发组可以自己开发并且放在发布版本里面发布。那么大家都可以使用这种效果。但是如果用户想开发自己的装饰效果怎么办?
扫描关注公众号
The Beginning

  假设一个photoshop工程,对照片可以有很多种风格效果的装饰,有一些装饰效果photoshop开发组可以自己开发并且放在发布版本里面发布。那么大家都可以使用这种效果。但是如果用户想开发自己的装饰效果怎么办? 难道跑到ps开发组去,把自己的代码给人家,让人家把自己的代码放进人家的ps大工程里面,编译然后发布到下面一个新的发布版本里面吗,公布给社会嘛?如果人家不同意怎么办? 那自己开发的岂不是白费,可扩展性岂不是太差了?

d3L育儿早教网

  

d3L育儿早教网

  那么在这种情况下,便出现了插件工程的开发概念。ps开发组设计好一种支持效果装饰功能的接口。把这个接口公布给社会,所有个体用户可以都扩展这个接口,实现里面规定的方法。在ps主程序里面提供了一些使用这些接口方法的代码。然后可以把任何实现了这个接口的类加载到主程序中,并且运行在接口里面定义好的方法。那么用户自己实现了接口里面定义好的方法,实现好自己设计的装饰效果,就可以被主程序加载,并且对照片进行用户自己的定义的装饰效果。d3L育儿早教网

  d3L育儿早教网

  那么这些独立的装饰效果就可以被理解为独立的插件工程,可以都由社会各个独立的团体自己开发,只需要到时候在自己电脑上把自己的插件工程跟主程序连接起来,就可以使用自己设计的插件了。而在photoshop方面,开发组只需要定义好接口,只需要负责自己的主程序,也不需要把社会上所有的开发的插件都加到主程序里面全部一次性的编译,并且发布。 这样就极大化的支持了开发的自由性。d3L育儿早教网

  d3L育儿早教网

  支持插件开发概念的主要技术则主要是依靠Java的动态类加载功能,以及类的动态绑定技术。d3L育儿早教网

  d3L育儿早教网

  通过一个例子也许更好的能解释所有东西。d3L育儿早教网

  d3L育儿早教网

  首先建立一个interface类,然后导出成一个jar包。在主程序和插件程序中都把这个jar当成类库加入。d3L育儿早教网

  d3L育儿早教网

  package printInterface;d3L育儿早教网

  d3L育儿早教网

  public interface MyActionInterface {d3L育儿早教网

  d3L育儿早教网

  public void print();d3L育儿早教网

  d3L育儿早教网

  }d3L育儿早教网

  d3L育儿早教网

  导出jar文件名叫做interface.jard3L育儿早教网

  d3L育儿早教网

  然后在插件工程里面实现这个接口,并且也导出一个jar包,拷贝到跟主程序main方法类的同一文件夹中,一般class文件都在bin文件夹中d3L育儿早教网

  d3L育儿早教网

  public class MyAction implements printInterface.MyActionInterface {d3L育儿早教网

  d3L育儿早教网

  @Overrided3L育儿早教网

  d3L育儿早教网

  public void print() {d3L育儿早教网

  d3L育儿早教网

  System.out.println("Now you have used my Plug-in");d3L育儿早教网

  d3L育儿早教网

  }d3L育儿早教网

  d3L育儿早教网

  }d3L育儿早教网

  d3L育儿早教网

  导出jar包名叫myActionPlug-in.jard3L育儿早教网

  d3L育儿早教网

  下面是主程序,在其中动态加载了插件工程,如果插件工程能被搜索到,那么就执行插件功能,如果被搜索不到,那么就什么都不执行。d3L育儿早教网

  d3L育儿早教网

  import java.NET.URL;d3L育儿早教网

  d3L育儿早教网

  import java.net.URLClassLoader;d3L育儿早教网

  d3L育儿早教网

  public class MyActionMain {d3L育儿早教网

  d3L育儿早教网

  /**d3L育儿早教网

  d3L育儿早教网

  * @param argsd3L育儿早教网

  d3L育儿早教网

  * @throws ClassNotFoundExceptiond3L育儿早教网

  d3L育儿早教网

  * @throws IllegalAccessExceptiond3L育儿早教网

  d3L育儿早教网

  * @throws InstantiationExceptiond3L育儿早教网

  d3L育儿早教网

  */d3L育儿早教网

  d3L育儿早教网

  public static void main(String[] args) throws ClassNotFoundException,d3L育儿早教网

  d3L育儿早教网

  InstantiationException, IllegalAccessException {d3L育儿早教网

  d3L育儿早教网

  // 首先得到plugin的url(plugin插件拷在跟MyActionMain.class同一个文件夹中默认是bin文件夹中)d3L育儿早教网

  d3L育儿早教网

  URL url = MyActionMain.class.getResource("myActionPlug-in.jar");d3L育儿早教网

  d3L育儿早教网

  // 得到类加载器d3L育儿早教网

  d3L育儿早教网

  URLClassLoader loader = new URLClassLoader(new URL[] { url });d3L育儿早教网

  d3L育儿早教网

  // 得到plugin类的类对象d3L育儿早教网

  d3L育儿早教网

  Class clazz = loader.loadClass("MyAction");d3L育儿早教网

  d3L育儿早教网

  // 如果有这个插件,就进行下面的动作,如果没有这个插件就返回d3L育儿早教网

  d3L育儿早教网

  if (clazz == null) {d3L育儿早教网

  d3L育儿早教网

  return;d3L育儿早教网

  d3L育儿早教网

  }d3L育儿早教网

  d3L育儿早教网

  // 对这个类进行实例化d3L育儿早教网

  d3L育儿早教网

  Object obj = clazz.newInstance();d3L育儿早教网

  d3L育儿早教网

  // 把Object转换成接口类型d3L育儿早教网

  d3L育儿早教网

  printInterface.MyActionInterface mai = (printInterface.MyActionInterface) obj;d3L育儿早教网

  d3L育儿早教网

  // 动态绑定,运行实现了这个接口的类的方法d3L育儿早教网

  d3L育儿早教网

  mai.print();d3L育儿早教网

  d3L育儿早教网

  }d3L育儿早教网

  d3L育儿早教网

  }d3L育儿早教网

  d3L育儿早教网

  注意这里是明确指定了插件所在的位置,要想更灵活的定位插件,或者让主程序在运行的时候自己主动寻找可以加载的插件,并且可以利用这些插件。那么就要在plug.xml里面进行设置。如果想进一步了解信息,就可以查找更多的材料。d3L育儿早教网


d3L育儿早教网

THE END
广告、内容合作请点击这里 寻求合作
免责声明:本文系转载,版权归原作者所有;旨在传递信息,其原创性以及文中陈述文字和内容未经本站证实。

育儿知识

所属专题: 插件  脚本  百科  概念  

本文地址:http://www.yuerzaojiao.com/qiaomen/youxi/218829.html

最新文章
  • 1腾讯为什么告老干妈(腾讯跟老干妈什么情况)

    腾讯为什么告老干妈(腾讯跟老干妈什么情况)

  • 2突然确诊癌症中晚期,已转移!宁波男子无法接受:怎么可能!医生:发现一个,全家高危!

    突然确诊癌症中晚期,已转移!宁波男子无法接受:怎么可能!医生:发现一个,全家高危!

  • 3疑似皇马前主席之孙公然辱华,皇马却称“将致力于消除足球界种族歧视”?

    疑似皇马前主席之孙公然辱华,皇马却称“将致力于消除足球界种族歧视”?

  • 4韩军称朝鲜军人无意中越界 韩军称朝鲜军人无意中越界了吗

    韩军称朝鲜军人无意中越界 韩军称朝鲜军人无意中越界了吗

  • 5中纪委再打两“虎”!还有一“虎”被免职,一“虎”获刑十五年!

    中纪委再打两“虎”!还有一“虎”被免职,一“虎”获刑十五年!

  • 6吉林市将举办世界锅包肉大赛,此前召开座谈会论证锅包肉起源

    吉林市将举办世界锅包肉大赛,此前召开座谈会论证锅包肉起源

  • 7哪些爱爱姿势更容易怀孕 选择这些爱爱姿势帮助生儿生女

    哪些爱爱姿势更容易怀孕 选择这些爱爱姿势帮助生儿生女

  • 8男性精子存活时间有多久 精子存活率低怎么办

    男性精子存活时间有多久 精子存活率低怎么办

  • 9医生算错怀孕周数怎么办 孕龄胎龄预产期原来是这样算的

    医生算错怀孕周数怎么办 孕龄胎龄预产期原来是这样算的

  • 10备孕未准妈妈请注意 这里有份孕前自检表请签收

    备孕未准妈妈请注意 这里有份孕前自检表请签收

推荐文章

关于我们 | 广告服务 | 网站合作 | 免责声明 | 联系我们| 网站地图

© 2022 育儿早教网 All Rights Reserved. 沪ICP备20230950727号-10

声明: 本站文章均来自互联网,不代表本站观点 如有异议 请与本站联系 联系邮箱:kefu#yuerzaojiao.com (请把#替换成@)