<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    如鵬網 大學生計算機學習社區

    CowNew開源團隊

    http://www.cownew.com 郵件請聯系 about521 at 163.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks

       做系統設計的時候有時會碰到一些無法在父類(或者接口)中抽取通用行為的特性,遇到這種情況就可以采用StringConfigure模式,這個模式我取的名字,不知道是否已經有先人做了總結,如果哪位朋友知道這種模式的正確名稱,希望不吝賜教。
       以JDBC中取得數據庫連接為例,我們可以抽象出數據庫的一些公共行為,比如連接數據庫都要求提供用戶名和密碼,因此在JDBC中提供設定連接的用戶名和密碼的方法。但是另外的一些行為則不一定是所有數據庫都具備的,比如對于網絡型數據庫才需要指定網絡地址,而文件型數據庫則不需要,再比如在MySQL中需要指定字符集,而其他數據庫則不一定需要。如果為了照顧這些特性,為JDBC提供setHostIP、setDBFilePath、setCharSet等方法的話無疑會使得接口變得復雜,會出現很多用不到的方法,并且這些方法也無法覆蓋所有未來可能出現的情況,比如某個數據庫又增加了允許用戶定制連接超時的方法,那么JDBC也要為他提供相應的setTimeOut方法。為了解決這個問題,JDBC提出了連接字符串的概念,這樣各個數據庫的JDBC驅動只要規定好連接字符串的格式即可,用戶把所有的配置信息寫到連接字符串中,如果用戶修改為其他數據庫的話只需修改連接字符串即可,不用修改其他的調用。
       使用StringConfigure模式的好處是使得系統中的個性化配置在一個參數中完成,這樣保證系統的不同模塊的行為的一致性,缺點是配置字符串的格式要由各個實現模塊來規定,各個不同實現模塊的格式不一致,造成了一定的學習成本,而且無法在開發期發現配置字符串的問題。
       這里再來講一個StringConfigure模式的應用的例子?,F在我們要開發一套對IC卡讀寫器的類庫,應用開發人員只要調用不同的IC卡讀寫子類即可實現操作不同的IC卡讀寫器。各種不同的IC卡讀寫器有兩個共同的抽象行為:讀卡和寫卡,即readCard和writeCard,但是各個不同的讀卡器還有自己的特性,比如有的讀卡器需要指定采用ISO格式還是IBM格式來讀寫磁卡,有的讀卡器需要指定讀寫操作的分隔符,這些特性不是各個讀寫器共有的,因此我們采用StringConfigure模式進行設計,開發如下的接口:
    interface IICCarder
    {
      public void writeCard(String data);
      public String readCard();
      public void configure(String configStr);
    }

       比如需要指定讀寫格式的讀寫器就可以如下實現:
    class SomeCarder implements IICarder
    {
        private FormatEnum format;
        public void writeCard(String data)
        {
           if(format==FormatEnum.IBM)
           {
                 .........
           }
           else...........
        }
        public String readCard()
        {.............
        }
        public void configure(String configStr)
        {
            if(configStr.equls("IBM"))
            {
               format=FormatEnum.IBM
            }
            else if(configStr.equls("ISO"))
            {
               format=FormatEnum.ISO
            }
        }
    }

    開發人員使用的時候只要如下調用
    IICarder c = new SomeCarder();
    c.configure("IBM");
    print c.readCard();
    如果采用配置文件的話更可以把配置參數寫到配置文件中,這樣就可以避免修改代碼。

    posted on 2007-05-19 00:22 CowNew開源團隊 閱讀(1139) 評論(2)  編輯  收藏 所屬分類: 技術類

    評論

    # re: StringConfigure模式 2007-05-19 03:06 bean
    個人感覺應該是構建模式中的builder模式。
    Gof的設計模式中是這么說builder模式的:
    Separate the construction of a complex object from its representation so that the same construction process can create different representations.

    我覺得你提的這個應該大致是符合builder模式的。  回復  更多評論
      

    # re: StringConfigure模式 2007-05-19 09:07 CowNew開源團隊
    多謝指教  回復  更多評論
      

    主站蜘蛛池模板: 久久国产精品成人片免费| 久青草国产免费观看| 国产h视频在线观看网站免费| 亚洲AV无码国产精品色午友在线| 中文成人久久久久影院免费观看 | 又硬又粗又长又爽免费看| 国产午夜影视大全免费观看| 亚洲av无码av在线播放| 免费国产成人高清在线观看麻豆 | 久久久久久亚洲精品影院| 一区二区无码免费视频网站| 亚洲无码一区二区三区| 韩国欧洲一级毛片免费| 无码精品人妻一区二区三区免费| 亚洲人成人无码网www国产| 99久久99这里只有免费的精品| 久久精品国产亚洲沈樵| 最近最新高清免费中文字幕| 亚洲国产成人久久综合一区| 女人18毛片a级毛片免费视频| 韩国亚洲伊人久久综合影院| 中文字幕亚洲第一| 国产精品免费福利久久| 久久精品亚洲AV久久久无码| 四虎在线播放免费永久视频| 两性色午夜免费视频| 亚洲精品在线免费观看视频| 日韩视频免费在线| a级毛片无码免费真人久久| 亚洲视频日韩视频| 国产男女猛烈无遮挡免费视频网站| 无码AV动漫精品一区二区免费| 久久亚洲国产成人亚| 国产精品成人免费视频网站京东| 九九精品国产亚洲AV日韩| 亚洲国产日韩在线视频| 成人奭片免费观看| 99免费在线视频| 亚洲色偷偷色噜噜狠狠99| 在线亚洲97se亚洲综合在线| 国产免费毛不卡片|