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

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

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

    應用,一定要應用

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      25 Posts :: 0 Stories :: 118 Comments :: 0 Trackbacks

    2004-05-25

    每次看設計模式這本書的時候都有著相同的感覺,上次沒有真的理解,這次才是理解了,但是還差那么一點點。
    人其實挺奇怪的,這些模式在編程的幾年之內,無論是具體的項目中還是自己的練習中,都使用了很多,只是沒有作為一種模式總結出來而已,而是以經驗的形式存在于腦海之中,隨意的使用,隨意的忘卻。
    可能就是必然的學習過程吧,隨意使用--形成模式--突破模式靈活應用。而模式在這里起著把經驗持久化的作用吧,減少忘卻的可能。
    所以,真正的掌握模式,除了需要理解模式的表現之外,需要理解模式著力解決的問題,理解模式的缺陷和優勢,才能做到最終靈活抽取各個模式之長而靈活組合之,這可能就是我在模式領域追求的無招勝有招的境界吧。

    模式的核心目的大多是兩種之一:重用和解耦

    言歸正傳,還是來說說具體的模式吧:Design patterns


    模式分類:構建型模式
    模式一:抽象工廠(Abstract Factory)
    Factory理解為對象工廠的概念,用以生成一個系列的對象組。
    而Abstract Factory就是基于Factory之上的概念,目的是把多個系列的對象組抽取共性,屏蔽不同系列之間的對象的差異。

    ?系列???? motif?????? windows?
    對象組
    Button??? motifBtn??? wBtn
    Bar?????? motifBar????wBar
    Textbox?? motifTB???? wTB

    class abstractFactory{
    ?Button getButton();
    ?Bar getBar();
    ?Textbox getTextbox();
    }


    button,bar,textbox是一組對象,而我們需要實現motif,windows等不同系列風格的對象組,Abstract Factory提供的方式下,我們對于大多應用程序而言,操作的口是abstractFactory,以及Button,Bar,Textbox這些對象組,而無需具體關心是motif風格還是windows風格的,風格系列的指定只決定于實現abstractFactory的具體工廠類。

    這種方法便于這種系列的增加,但是并不有利于對象組成員的增加,比如要增加一個label對象,我們就需要增加一個抽象對象Lable,還需要修改abstractFactory以及他所有的子類。

    所以使用這種方法的時候,最重要的是對象組的規劃設計。


    模式二:生成器(builder)
    生成器的概念是提供一系列的方法生成對象的不同部分,最終返回一個完整的對象,著力于解決將構造方法和構造步驟分離的問題,builder內部封裝的是構建方法而不是過程。
    做了這樣的分離之后,再將builder做一個抽象,從而使得不同的構建方法和構建過程做到分離。

    假設一個串的存儲管理:
    class builder(){
    ?add(key,value);
    ?addStr(str);
    }

    同樣的操作集合,
    add(key,value),addStr(str)
    對于不同的builder,可能輸出的結果就會有多種:
    key=value;str

    另一種可能:

    ?value
    ?str

    模式三:工廠方法(Factory)
    其實他的另一個名字更加能夠說明問題(虛構造)
    也就是說通過抽象類的共同方法來避免構造時的硬編碼,
    如:button對象有個getBtn的方法,
    就可以避免寫出button btn = new motifButton();這樣的代碼,而將這樣的代碼封裝到了子類自身。


    模式四:原型法(prototype)
    就是在應用時并不是創建一個新的對象,而是從已有的對象中拷貝一個。
    這種方式我在做配置池的時候用到過,每個業務程序從我的池中去拷貝一個對象,然后才進行相關的修改和應
    用。
    這種方式同樣是動態創建類的方法,著重于解決當對象組的成員不穩定的情況,而不是多個系列的問題。

    與Factory相比,他并不是每一個原型都需要一個構建子類。
    缺點:clone本身實現的難度。

    模式五:單件(singleton)
    這種模式使用無數,就不再多說了。用于保證實例的唯一性。

    posted on 2006-08-24 17:08 flyffa 閱讀(921) 評論(0)  編輯  收藏 所屬分類: 讀書
    主站蜘蛛池模板: 亚洲天堂在线播放| 亚洲色偷偷综合亚洲AVYP| 亚洲黄网在线观看| 国产一级片免费看| 久久久久久久综合日本亚洲| 国产精品九九久久免费视频| 国产亚洲精品资在线| 国产乱妇高清无乱码免费| 国产亚洲精品影视在线产品 | 亚洲性色AV日韩在线观看| 我要看免费的毛片| 亚洲av无码片vr一区二区三区| 成人毛片视频免费网站观看| 亚洲大码熟女在线观看| 亚洲麻豆精品国偷自产在线91| 一道本不卡免费视频| 国产成人亚洲精品青草天美| 美丽姑娘免费观看在线观看中文版| 亚洲福利一区二区精品秒拍| 欧美a级在线现免费观看| 久久亚洲中文无码咪咪爱| 亚洲?V乱码久久精品蜜桃| 99视频在线观看免费| 亚洲国产高清在线精品一区| 毛片免费观看网址| 免费无码午夜福利片| 亚洲AV永久纯肉无码精品动漫| 波多野结衣在线免费观看| 亚洲成av人在线观看网站| 亚洲欧洲日产国码高潮αv| 无码A级毛片免费视频内谢| 亚洲三级在线视频| 亚洲?V乱码久久精品蜜桃| 亚欧免费无码aⅴ在线观看| 亚洲一区二区三区91| 亚洲无码日韩精品第一页| 1a级毛片免费观看| 男人的天堂av亚洲一区2区| 亚洲AV无码专区国产乱码4SE| 成人性生交大片免费看无遮挡 | 国产精品免费看久久久无码|