`
liugang594
  • 浏览: 985518 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

合理的自定义扩展点

阅读更多

Eclipse中提供了各种各样的用于扩展Eclipse功能的扩展点。

有时候,我们也要考虑提供合适的自定义扩展点来使用得应用的实现和扩展更加简单容易。

 

例子一:

 

例如以前做了一个编辑SA中各种SU的配置文件的扩展,一开始做法就很傻,把所有的类型的编辑实现都在一个插件实现类中,然后在createControl()的时候,根据用户选择的类型,就会有大致如下的实现方式:

 

if(...){

    a.createControl();

}else if(....){

     b.createControl();

}....

 

后来我就建议他们稍稍修改一下,定义一个扩展点来实现不同类型的选择,例如定义一个扩展点:com.....type.editor

然后实现的时候需要提供一个type类型和一个对应的实现类:

例如 type="file" class="com.....FileTypeEditor"

 

剩下的就是加载扩展点,根据type查找对应的Editor实现。这个实现方式明显比之前要好很多:

 

首先:代码结构明显清晰很多

再次:可以自由的增加和减少实现类型而不用修改代码

最后:可以自由修改匹配类型而不用修改代码

 

例子二:

 

写一个简单的代码统计工具,用来统计当前选择文件或文件夹里的代码行数。现在语言和脚本类型这么多,不可能通过一个长长的判断语句来把所有的统计类型都考滤进去,何况还有各种新语言层出不穷;例如properties文件就认为"#"是注释、bat文件里rem是一个注释、java里有/** */等等。

 

所以一个良好的实现就是提供一个统计类的扩展点用来提供各种对应类型的统计方式。

 

例如:

   <extension
         point="com.tibco.cdc.liugang.codecount.countDelegate">
      <delegate
            class="com.tibco.cdc.liugang.codecount.count.CountJavaFile"
            fileExtensions="java">
      </delegate>
      <delegate
            class="com.tibco.cdc.liugang.codecount.count.CountPropertiesFile"
            fileExtensions="properties">
      </delegate>
   </extension>

 

在自定义扩展点时,有一点很重要:提供一个良好的继承类或接口。

 

很难考滤的一点给用户足够的信息。有时无法预测用户究竟需要哪些信息。

 

例如我做一个SCA BPEL组件时,要从XPDL文件生成一个直接可部署的包里。因为那些Activity可能有各种各样的类型,每个类型都可能有一个单独的实现,所以我需要提供一个扩展点用以给各种实现类型一个自己在扩展来给出他们的信息以实现打包工能,最大的问题就是:无法预测有什么样类型的实现会给出,这些实现类型需要什么样的信息来实现他们的打包逻辑。所以大至只能想了!

 

 

分享到:
评论

相关推荐

    自定义扩展数据类型1

    ### 自定义扩展数据类型在MCU编程中的应用 #### 标题与描述解析 本篇文章主要探讨的主题是“自定义扩展数据类型1”,通过提供的代码片段来看,文章着重于介绍如何在微控制器(MCU)中自定义和扩展数据类型,并通过...

    C#自定义控件库

    "C#自定义控件库"是指使用C#语言编写的、由开发者自定义的控件集合,这些控件可以扩展.NET Framework的标准控件集,为用户提供更丰富的界面元素和功能。自定义控件是软件开发中的一个重要环节,特别是在UI设计和用户...

    自定义控件(自定义属性、合理设计onMeasure、合理设计onDraw等)(转)

    自定义控件涉及的关键知识点包括自定义属性、合理的`onMeasure`设计以及`onDraw`方法的优化。下面将详细阐述这些核心内容。 首先,**自定义属性**是自定义控件时常常需要考虑的部分。Android提供了XML属性扩展机制...

    开发自定义View 源码

    博客《开发自定义View》详细讲述了自定义View的流程和关键点,包括以下几个主要知识点: 1. **自定义View的基本结构**:自定义View通常需要继承自Android的View或ViewGroup类。View类是所有UI元素的基础,而...

    自定义控件与属性

    在Android开发中,自定义控件是提升应用...通过以上步骤,我们可以创建出具有独特特性和外观的自定义控件,极大地扩展了Android开发的可能性。在实际开发过程中,要不断学习和实践,以提升自定义控件的设计和实现水平。

    qt 生成自定义二维码

    总之,使用Qt生成自定义二维码涉及到的主要技术点包括Qt的QrCode类、图像处理、文字绘制以及面向对象编程,通过合理的封装和设计,可以构建出功能强大的二维码生成工具。在进行开发时,不断实践和学习,对Qt库的深入...

    自定义查询表设计.zip

    下面我们将深入探讨自定义查询表设计的相关知识点。 1. **自定义查询**:自定义查询允许用户根据自己的需求构建查询条件,而不是受限于预定义的查询模板。这在数据量庞大、业务需求多变的系统中非常实用。实现...

    自定义折线图Demo

    1. **自定义View**: 自定义View是Android开发中的一个重要概念,允许开发者扩展系统提供的基本视图,以满足特定需求。在自定义折线图Demo中,开发者创建了一个全新的View类,继承自`View`或`ViewGroup`,并覆盖了`...

    android 自定义View界面大合集

    1. **自定义View的基本原理**:自定义View通常基于`View`或`ViewGroup`类进行扩展,通过重写关键方法如`onDraw()`、`onMeasure()`和`onLayout()`来实现绘图逻辑和布局管理。理解这些方法的生命周期和工作原理是创建...

    自定义报表使用技巧自定义报表使用技巧总结

    在使用自定义报表时,需要注意以下几点: 1. 对于时间筛选,确保数据范围的合理性,避免大数据量导致的性能问题。 2. 避免在报表中写入大量脚本,因为这可能导致查询条件设置错误。建议将SQL脚本生成视图,然后在...

    Android自定义控件示例

    在Android开发中,自定义控件是提升应用独特性和功能扩展性的重要手段。这个压缩包“CustomViews”很可能是包含了一系列Android自定义控件的示例项目,旨在帮助开发者理解和学习如何在Android Studio 1.0.2环境下...

    android自定义控件、自定义圆角布局Demo

    因此,理解`canvas.clipPath()`、`canvas.clipRect()`等方法,以及如何合理使用硬件加速,对于优化自定义控件的性能至关重要。 8. **测试与调试**: 开发自定义控件时,测试不同设备、屏幕尺寸和Android版本的兼容...

    自定义View基础

    6. **性能优化**:自定义View时要考虑性能,避免在onDraw()中执行耗时操作,使用硬件加速,合理使用View的复用机制,以及避免过度绘制等。 7. **属性动画**:自定义View可以利用Android的属性动画系统,实现更丰富...

    自定义控件其实很简单7/12

    1. **基础控件扩展**:Android SDK提供了许多预定义的视图(如Button、TextView等),自定义控件往往从这些基础类继承,如`View`、`ViewGroup`或特定的视图类,以便利用其已有的功能。 2. **绘制逻辑**:自定义控件...

    Android自定义组件开发

    以上就是Android自定义组件开发的主要知识点,通过熟练掌握这些技能,开发者可以创造出功能丰富、性能优秀的自定义组件,提升应用的品质和用户体验。提供的"超好的webview学习资料.pdf"和"Android自定义组件开发详解...

    QT 自定义进度条实例

    在自定义进度条的过程中,我们可能会涉及以下几个关键点: 1. **样式表(QSS)**:QT支持类似于CSS的样式表,可以用来改变控件的外观。通过设置QProgressBar的QSS,我们可以更改进度条的颜色、宽度、边框、背景等...

    自定义ViewGroup组合控件

    自定义ViewGroup意味着扩展Android的 ViewGroup 类或其子类,如 LinearLayout、RelativeLayout 或 FrameLayout,以实现特定的功能或视觉效果。本知识点主要围绕如何设计和实现自定义ViewGroup,以及如何处理其中的...

    好用的mfc自定义控件

    本文将深入探讨如何利用MFC自定义控件,以及与颜色和背景色相关的知识点。 首先,标题"好用的mfc自定义控件"暗示我们将讨论如何在MFC环境中创建和使用自定义控件。MFC自定义控件是开发者为了满足特定需求而设计的,...

    自定义textview与editview

    自定义TextView和EditText的核心在于继承现有的系统控件,并重写或扩展其功能。这可以通过创建一个新的Java类来实现,该类继承自TextView或EditText,并添加我们所需的新特性。 例如,我们可以创建一个`...

    Android 自定义组合控件案例

    以下将详细介绍Android自定义组合控件的相关知识点。 一、自定义控件的分类 1. 组件扩展:对现有控件进行功能增强或样式修改,例如自定义Button增加动画效果。 2. 组合控件:结合多个基础控件,形成新的复合控件,...

Global site tag (gtag.js) - Google Analytics