国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java使用dom4j解析xml配置文件實現抽象工廠反射示例

java使用dom4j解析xml配置文件實現抽象工廠反射示例

2019-10-27 12:17java技術網 JAVA教程

本文主要介紹了java使用dom4j讀取配置文件實現抽象工廠和反射的示例,在Java中也可以同Donet一樣,將差異配置在配置文件里面。另外,我們采用下面的方式實現,將會更加便捷

邏輯描述:

現在我們想在B層和D層加上接口層,并使用工廠。而我們可以將創建B和創建D看作是兩個系列,然后就可以使用抽象工廠進行創建了。

配置文件:beans-config.xml。service-class與dao-class分別對應兩個系列的產品。子菜單中id對應接口的命名空間,class對應實現類的命名空間。

 

復制代碼代碼如下:

[html] view plaincopyprint? 

    <?xml version="1.0" encoding="UTF-8"?>   
    <beans>   
         <service-class>   
            <service id="com.xxjstgb.drp.basedata.manager.ItemManager" class="com.xxjstgb.drp.basedata.manager.ItemManagerImpl" />   
            <service id="com.xxjstgb.drp.flowcard.manager.FlowCardManager" class="com.xxjstgb.drp.flowcard.manager.impl.FlowCardManagerImpl" />   
         </service-class>   
         <dao-class>   
            <dao id="com.xxjstgb.drp.basedata.dao.ItemDao" class="com.xxjstgb.drp.basedata.dao.ItemDao4OracleImpl" />   
            <dao id="com.xxjstgb.drp.flowcard.dao.FlowCardDao" class="com.xxjstgb.drp.flowcard.dao.impl.FlowCardDaoImpl" />   
         </dao-class>   
    </beans>   

 

抽象工廠:BeanFactory。通過讀取配置文件,取得相關對象,并將相關創建好的對象保存在Map中。

復制代碼代碼如下:

[java] view plaincopyprint? 

    package com.xxjstgb.drp.util;   

    import java.util.HashMap;   
    import java.util.Map;   

    //dom4j   
    import org.dom4j.Document;   
    import org.dom4j.DocumentException;   
    import org.dom4j.Element;   
    import org.dom4j.io.SAXReader;   

    import com.xxjstgb.drp.basedata.dao.ItemDao;   
    import com.xxjstgb.drp.basedata.manager.ItemManager;   
    import com.xxjstgb.drp.flowcard.dao.FlowCardDao;   
    import com.xxjstgb.drp.flowcard.manager.FlowCardManager;   

    /**  
     * 抽象工廠,主要創建兩個系列的產品  
     * 1、Manager系列  
     * 2、Dao系列產品  
     * @author liuzhengquan  
     *  
     */   
    public class BeanFactory {   

        private static BeanFactory instance=new BeanFactory();   

        //系統缺省配置文件名稱   
        private final String beansConfigFile="beans-config.xml";   

        //保存Dao相關對象   
        private Document doc;   

        /*  
         * key=配置文件中的id值  
         * value=對應了該Id的對象  
         */   
        private Map serviceMap = new HashMap();//保存Service相關對象   
        private Map daoMap = new HashMap();//保存Dao相關對象   

           
        private BeanFactory(){   
            try {   
                doc=new SAXReader().read(Thread.currentThread().getContextClassLoader().getResourceAsStream(beansConfigFile));   
            } catch (DocumentException e) {   
                e.printStackTrace();   
                throw new RuntimeException();   
            }   
        }   

        public static BeanFactory getInstance(){   
            return instance;   
        }   

        /**  
         * 根據產品編號取得Service系列產品  
         * @param serviceId  
         * @return  
         */   
        public synchronized Object getServiceObject(Class c){   
            //如果存在相關對象實例,返回   
            if(serviceMap.containsKey(c.getName())){   
                return serviceMap.get(c.getName());   
            }   
            Element beanElt=(Element)doc.selectSingleNode("//service[@id=\""+ c.getName() + "\"]");   
            String className=beanElt.attributeValue("class");   
            Object service=null;   

            try {   
                service=Class.forName(className).newInstance();   

                //將創建好的對象放到Map中   
                serviceMap.put(c.getName(), service);   
            } catch (Exception e) {   
                throw new RuntimeException();   
            }   
            return service;   
        }   

        /**  
         * 根據產品編號取得Dao系列產品  
         * @param daoId  
         * @return  
         */   
        public synchronized Object getDaoObject(Class c){   
            //如果存在相關對象實例,返回   
            if(daoMap.containsKey(c.getName())){   
                return daoMap.get(c.getName());   
            }   
            Element beanElt=(Element)doc.selectSingleNode("//dao[@id=\""+c.getName()+"\"]");   
            String className=beanElt.attributeValue("class");   
            Object dao=null;   

            try {   
                dao=Class.forName(className).newInstance();   

                //將創建好的對象放到Map中   
                daoMap.put(c.getName(), dao);   
            } catch (Exception e) {   
                throw new RuntimeException();   
            }   
            return dao;   
        }   

           
        /**  
         * 測試  
         * @param args  
         */   
        public static void main(String[] args){   
            ItemManager itemManager=(ItemManager)BeanFactory.getInstance().getServiceObject(ItemManager.class);   
            System.out.println("itemManager"+itemManager);   

            ItemDao itemDao=(ItemDao)BeanFactory.getInstance().getDaoObject(ItemDao.class);   
            System.out.println("itemDao:"+itemDao);   

            FlowCardManager flowCardManager=(FlowCardManager)BeanFactory.getInstance().getServiceObject(FlowCardManager.class);   
            //FlowCardManager flowCardManager=new FlowCardManagerImpl();   
            System.out.println(flowCardManager);   

            FlowCardDao flowCardDao=(FlowCardDao)BeanFactory.getInstance().getDaoObject(FlowCardDao.class);   
            //FlowCardDao flowCardDao=new FlowCardDaoImpl();   
            System.out.println("flowCardDao:"+flowCardDao);   
        }   

    }   
   

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲视频在线观看网址 | 国产激情不卡 | www.99re| 91黄在线观看 | 精品伊人| 精品一区二区三区免费 | 欧美日韩精品免费 | 亚洲精品久久久久久久久久久 | 91中文在线观看 | 中文字幕av亚洲精品一部二部 | 久久午夜精品 | 欧美一级二级三级 | 亚洲视频一区二区 | 午夜天堂精品久久久久 | 91精品国产综合久久香蕉最新版 | 日本一区二区视频 | 美女毛片 | www.久草.com| 黄色小视频免费 | 久草福利在线视频 | 亚洲久久 | 久久综合九九 | 中文字幕精品视频 | 日韩在线视频观看 | 午夜影院啊啊啊 | 久久久日本 | av在线资源网 | 午夜在线观看视频网站 | 午夜在线观看视频 | 国产日本韩国在线 | 欧美日韩精品在线 | 国产午夜精品久久久久久久 | 亚洲成人精品一区 | 欧美日韩国产一区二区三区不卡 | 欧美在线a | 欧美精品在线一区二区三区 | 亚洲一区中文字幕在线观看 | 激情视频网站 | 性色视频免费观看 | 91成人短视频在线观看 | 中国成人免费视频 |