一个接口多个实现_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 一个接口多个实现

一个接口多个实现

 2012/2/23 9:34:21  snoopy7713  程序员俱乐部  我要评论(0)
  • 摘要:-----------------------------------------接口的实现部分-------------------------------------------<?xmlversion="1.0"encoding="UTF-8"?><scr:componentxmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0"name="com.cvicse.usap.framework.views
  • 标签:实现 一个 接口

-----------------------------------------
?接口的实现部分
-------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="com.cvicse.usap.framework.views.MyAccordionView">
   <implementation class="com.cvicse.usap.framework.views.MyAccordionView"/>
   <service>
      <provide interface="com.cvicse.usap.framework.myapplication.api.IMyAccordionView"/>
   </service>
</scr:component>


-------------------------------------------
类com.cvicse.usap.framework.MyVappcation
-------------------------------------------

------------------------------------
? 实现类中引入了其他的service
------------------------------------

  <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="myVapplication" factory='vaadin.app'>
   <implementation class="com.cvicse.usap.framework.MyVappcation"/>
   <reference bind="bindAccordionTab" cardinality="0..n" interface="com.cvicse.usap.framework.myapplication.api.IMyAccordionView" name="com.cvicse.usap.framework.myapplication.api.IMyAccordionView" policy="dynamic" unbind="unbindAccordionTab"/>
   <reference bind="bindTabsheetTab" cardinality="0..n" interface="com.cvicse.usap.framework.myapplication.api.IMyTabsheetView" name="com.cvicse.usap.framework.myapplication.api.IMyTabsheetView" policy="dynamic" unbind="unbindTabsheetTab"/>
 
</scr:component>

?

------------------------------------
?? 定义了一个集合
------------------------------------

// 左侧导航菜单内容集合--单例对象--小心使用
    public List<IAccordionView> accordionContributions = Collections
            .synchronizedList(new ArrayList<IAccordionView>());

?



------------------------------------------------------------------------------------------------------------
?bind="bindAccordionTab" 对应的方法。 bind是指bundle加载时注册用的也就是向集合中增加实现的方法。
?如果有多个实现,该方法会被调用多次。
------------------------------------------------------------------------------------------------------------

    /**
     * 注册左侧Accordion菜单
     *
     * @param accordionView
     */
    public void bindAccordionTab(IAccordionView accordionView) {
        // 将要绑定的菜单页加入集合中
        accordionContributions.add(accordionView);
        // Component component = accordionView.getView(this);

        if (initialized) {
            try {
                // TODO 从OSGI DS 获取
                Component component = accordionView.getView(this);

                // 判断权限,如果有权限,就增加到导航菜单
                if (getSecurity().isPermitted(accordionView.getResourceURI())) {
                    accordionComponentMap.put(accordionView.getResourceURI(),
                            component);
                    doAccordionClick(component);

                    if (null == accordionView.getIconPathType()) {
                        homeScreen.getNavigationAccorion().addTab(component,
                                accordionView.getName(), null);
                    } else if (accordionView.THEME_RESOURCE
                            .equals(accordionView.getIconPathType())) {
                        homeScreen.getNavigationAccorion().addTab(component,
                                accordionView.getName(),
                                new ThemeResource(accordionView.getIconPath()));
                    } else {
                        homeScreen.getNavigationAccorion().addTab(
                                component,
                                accordionView.getName(),
                                new ClassResource(accordionView.getClass(),
                                        accordionView.getIconPath(), this));
                    }

                }

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
?

?

发表评论
用户名: 匿名