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

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

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

    GOF《設(shè)計(jì)模式》一書對(duì)Adapter模式是這樣描述的:
      
     將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。Adapter模式使原本由于接口不兼容而不能一起工作的類可以一起工作。

        這段話大致是說:我們需要一種方式,為一個(gè)功能正確但接口不合的對(duì)象創(chuàng)建一個(gè)新接口。例如,客戶給我們?nèi)缦滦枨螅?/span>

    1) 為都有“顯示”(display)行為的點(diǎn)、線、正方形分別創(chuàng)建類。

    2) 客戶對(duì)象不必知道自己到底擁有點(diǎn)、線、還是正方形。它只需知道擁有這些形狀中的一個(gè)。

    也就是說,我們要用一個(gè)更高層次的概念將這些具體形狀都涵蓋進(jìn)去,這個(gè)高層概念可以稱為:“可顯示的形狀”。因此,我們需要?jiǎng)?chuàng)建一個(gè)接口Shape:

    interface Shape{

        publicvoid display();

    }

    現(xiàn)在客戶忽然間有讓我們給這個(gè)系統(tǒng)增加一個(gè)畫圓的功能。這個(gè)看起來很簡單,只需定義一個(gè)Circle類來實(shí)現(xiàn)Shape接口,但是我們要給它編寫display方法,這可不是件簡單的事,假如此時(shí)我們正好發(fā)現(xiàn)一個(gè)XXCircle類,它有一個(gè)方法剛好可以完成這個(gè)功能,那么有沒有更好的方法來利用它呢,這時(shí)我們就要用到Adapter模式了。XXCircle代碼如下:

    class XXCircle{

        public void displayCircle(){

           System.out.println("通過XXCircle.displayCircle()畫圓");

        }

    }

        Adapter模式有兩種類型:

    1)    對(duì)象Adapter模式,它依賴于一個(gè)對(duì)象(適配器)包含另一個(gè)對(duì)象(被適配的對(duì)象)

    class CircleObject implements Shape{

        public XXCircle circle;

        public CircleObject(XXCircle xxcircle){

        circle=xxcircle;

        }

        public void display() {

           circle.displayCircle(); 

        }

    }

    public class Client {

        public static void main(String[] args) {

           XXCircle circle=new XXCircle();

           CircleObject co=new CircleObject(circle);

           co.display();

        }

    }

    2)     類Adapter模式,它是通過多重繼承來實(shí)現(xiàn)的(java中沒有多繼承,是通過接口來實(shí)現(xiàn)的)。

    class CircleClass extends XXCircle implements Shape{

        public void display() {

           super.displayCircle();  

        }

    }

    public class Client {

        public static void main(String[] args) {

           CircleClass cc=new CircleClass();

           cc.display();

        }

    }

        小結(jié):Adapter模式是一個(gè)很常用的模式,它將一個(gè)(或多個(gè))類的接口轉(zhuǎn)換成我們需要類所具備的一個(gè)接口。它的實(shí)現(xiàn)方式是:創(chuàng)建一個(gè)具備所需接口的類,然后包裝原有類的方法,這樣實(shí)際上就包含了被適配的對(duì)象。它主要適用于以下幾種情況:

    1) 你希望使用他人編寫的子程序或方法,因?yàn)槟阈枰鶊?zhí)行的功能。

    2) 你無法將這個(gè)子程序直接加入程序中。

    3) 子程序的接口或調(diào)用方式與需要使用它的相關(guān)對(duì)象不完全相同。

    posts - 146, comments - 143, trackbacks - 0, articles - 0

    Copyright © flustar

    主站蜘蛛池模板: 亚洲香蕉在线观看| 亚洲欧洲日产国码在线观看| 日韩免费观看视频| 亚洲av无码乱码在线观看野外| 亚洲成?v人片天堂网无码| 亚洲一区二区女搞男| 久久亚洲精品成人AV| 亚洲AV噜噜一区二区三区 | 日韩a级毛片免费视频| 亚洲日韩国产成网在线观看| 亚洲AV一宅男色影视| 亚洲乱理伦片在线观看中字| 一级做a爱过程免费视| 亚洲一级免费视频| 中国亚洲女人69内射少妇| 激情亚洲一区国产精品| 久青草视频在线观看免费| 亚洲精品动漫免费二区| 亚洲va久久久噜噜噜久久| 精品国产亚洲AV麻豆| 69av免费视频| 在线观看午夜亚洲一区| 亚洲国产精品无码久久98| 在线日本高清免费不卡| 自拍偷自拍亚洲精品情侣| 黄色免费在线网址| 国产精品国产午夜免费福利看| 亚洲中文字幕久久精品无码VA| 久别的草原电视剧免费观看| 国产精品亚洲综合一区| va天堂va亚洲va影视中文字幕| 99精品视频在线观看免费播放| 亚洲一级特黄大片无码毛片 | 亚洲精品视频免费看| 亚洲AV日韩AV永久无码免下载| 九九热久久免费视频| 亚洲AV无一区二区三区久久| 丁香六月婷婷精品免费观看| 日本久久久免费高清| 蜜桃传媒一区二区亚洲AV| 日韩中文无码有码免费视频|