首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

一个接口多个兑现

2012-07-22 
一个接口多个实现-----------------------------------------?接口的实现部分 --------------------------

一个接口多个实现

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

<?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 name="code">  <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="myVapplication" factory='vaadin.app'>   <implementation 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();            }        }    }
?

?

热点排行