java如何實(shí)現(xiàn)對(duì)象工廠模式的注冊(cè)機(jī)-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)java如何實(shí)現(xiàn)對(duì)象工廠模式的注冊(cè)機(jī)的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

創(chuàng)新互聯(lián)于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元市中做網(wǎng)站,已為上家服務(wù),為市中各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

對(duì)象工廠模式

    class HK_ObjectFactory    
    {
    protected:
        HK_ObjectFactory();
        virtual ~HK_ObjectFactory();
    public:
        static HK_ObjectFactory& Instance();
        typedef std::function<HK_Object*()> InstanceFunc;
    public:
        void Register(const std::string& name, InstanceFunc);
        HK_Object* CreateObject(const std::string& name);
    public:
        
        std::unordered_map<std::string, InstanceFunc> _typeList;
    };

  1、提供一個(gè)可以動(dòng)態(tài)生成類實(shí)例的一個(gè)工廠;主要是提供 注冊(cè)映射關(guān)系,和得到示例的方法。
      采用宏來(lái)實(shí)現(xiàn)
      #define CREATE_CLASS_HK_OBJ(className) \
      HKObj_Factory.Register(#className, &className::createInstance) \

      HKObj_Factory.CreateObject("HK_Object");


   2、核心實(shí)現(xiàn)是 Register 注冊(cè)機(jī)
      定義:
      為了實(shí)現(xiàn)對(duì)象工廠,里面需要將類以注冊(cè)機(jī)制,注冊(cè)到工廠里,用的時(shí)候直接從工廠里??;
      采用的是提供一個(gè)類名,就可以創(chuàng)建類的示例的方法。

      實(shí)現(xiàn)思路:
         將類名的字符串、創(chuàng)建類示例的方法,形成一個(gè)映射關(guān)系。


                std::map<CString, std::function<T*()> > 去存儲(chǔ)這種關(guān)系;
         每個(gè)類需要提供一個(gè)靜態(tài)的創(chuàng)建函數(shù),主要作為注冊(cè)的方法,保存在 map 里;
         每個(gè)類的創(chuàng)建方法,格式應(yīng)該都是一樣的,所以也可以設(shè)計(jì)成一個(gè)宏去實(shí)現(xiàn);
            #define DECLARE_CLASS_HK_OBJ \
            public: \
               static HK_Object* createInstance(void); \

            #define IMPLEMENT_CLASS_HK_OBJ(className) \
               HK_Object* className::createInstance(void) \
            { \
               return className::getInstance(); \
            } \




感謝各位的閱讀!關(guān)于“java如何實(shí)現(xiàn)對(duì)象工廠模式的注冊(cè)機(jī)”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站標(biāo)題:java如何實(shí)現(xiàn)對(duì)象工廠模式的注冊(cè)機(jī)-創(chuàng)新互聯(lián)
瀏覽地址:http://muchs.cn/article40/cdsgeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、定制網(wǎng)站、軟件開發(fā)、營(yíng)銷型網(wǎng)站建設(shè)、建站公司、微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)