插件开发系列
- Android Studio插件开发1之插件介绍与环境搭建
- Android Studio插件开发2之Action System
- Android Studio插件开发3之Extensions And Extension Points(扩展与扩展点)
如果说自己定义Action并实现相应的功能逻辑是造轮子的话,那么实现Extensions就是使用别人的轮子了,简单快速实现复杂的功能!
定义
Extensions 和Extension Points是Intellij平台提供的一套供插件之间或者是插件与平台核心功能之间通信的接口。
Extension points
一个插件提供给其它插件扩展自己功能的入口点,通过定义接口来约定沟通的方法,通俗点说就是造好轮子等别人来用。
Extensions
一个插件声明一个Extension,并通过对应的Extension Point实现相应的功能,通俗的说就是复用别人造好的轮子。
关系图
如果文字表达得不够明白,看一下以下的说明图应该能加深理解,毕竟一图胜千言
声明Extension和Extension Point
Extension和Extension Point都需要在plugin.xml声明,声明的语法如下
Extension Point
<extensionPoints>
<extensionPoint name="ConcreteExtensionPoint1" beanClass="com.example.BeanClass">
<extensionPoint name="ConcreteExtensionPoint2" interface="com.example.Interface">
</extensionPoints>
- name 此Extension Point的名字
- beanClass/interface 提供的接口,定义与Extension的交互方式
Extension Point声明的方式有两种,第一是通过interface
的方式,此方式定义一个java接口供扩展方实现;第二是beanClass
的方式,其定义一个java bean,并在扩展方声明Extension的时候,由扩展方提供java bean的属性,这里不明白的话先看下面Extension的声明。