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

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

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

    應(yīng)用,一定要應(yīng)用

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

    2004-05-25

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

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

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


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

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

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


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

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

    所以使用這種方法的時(shí)候,最重要的是對象組的規(guī)劃設(shè)計(jì)。


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

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

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

    另一種可能:

    ?value
    ?str

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


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

    與Factory相比,他并不是每一個(gè)原型都需要一個(gè)構(gòu)建子類。
    缺點(diǎn):clone本身實(shí)現(xiàn)的難度。

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

    posted on 2006-08-24 17:08 flyffa 閱讀(921) 評論(0)  編輯  收藏 所屬分類: 讀書
    主站蜘蛛池模板: 四虎影视在线看免费观看| 67194在线午夜亚洲| 亚洲日韩在线观看免费视频| 女人18特级一级毛片免费视频| 亚洲国产综合精品中文第一| 114级毛片免费观看| 亚洲一卡2卡4卡5卡6卡在线99| 国产福利在线免费| 亚洲av无码专区在线观看亚| 国产在线a不卡免费视频| 免费国产a理论片| 亚洲精品一品区二品区三品区| a级黄色毛片免费播放视频| 亚洲Av综合色区无码专区桃色 | 免费国产黄网站在线观看动图| 国产成人综合久久精品免费| 特级aa**毛片免费观看| 亚洲一区二区三区影院 | 免费a在线观看播放| 国产成人精品免费视频大全| 久久精品国产亚洲一区二区| 最近中文字幕高清免费中文字幕mv| 亚洲av永久无码精品天堂久久 | 亚洲中久无码不卡永久在线观看| 男人天堂免费视频| 亚洲日本国产综合高清| 国产国产人免费视频成69大陆| 久草免费福利在线| 亚洲免费二区三区| 亚洲成A∨人片天堂网无码| 久久久久久久久久国产精品免费| 亚洲免费电影网站| 国产精品亚洲美女久久久| 91成人在线免费观看| www亚洲精品久久久乳| 亚洲av无码无在线观看红杏| 成人免费午夜无码视频| 一本岛v免费不卡一二三区| 亚洲美女视频免费| 狠狠亚洲狠狠欧洲2019| 99热在线精品免费全部my|