<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

    主站蜘蛛池模板: 99免费在线观看视频| 日本高清不卡aⅴ免费网站| 产传媒61国产免费| 久青草视频在线观看免费| 日本不卡免费新一区二区三区| 99精品视频在线免费观看| 我们的2018在线观看免费高清| 欧美大尺寸SUV免费| 亚洲av手机在线观看| 国产亚洲av片在线观看播放 | 免费无码看av的网站| 国产黄色一级毛片亚洲黄片大全| 亚洲va中文字幕无码久久不卡| 亚洲精品午夜视频| 亚洲精品av无码喷奶水糖心| www永久免费视频| 蜜桃成人无码区免费视频网站| 成人影片麻豆国产影片免费观看| 亚洲?v女人的天堂在线观看| 亚洲av无码乱码国产精品fc2| 在线a亚洲老鸭窝天堂av高清| 免费又黄又爽又猛大片午夜| 无码国产精品一区二区免费vr| 成人最新午夜免费视频| 精品亚洲成α人无码成α在线观看| 亚洲人成依人成综合网| 亚洲AV无码专区在线观看成人 | 青娱乐免费在线视频| 亚洲av无码乱码在线观看野外| 亚洲丝袜美腿视频| 老牛精品亚洲成av人片| 久久国产乱子伦精品免费强| 24小时免费直播在线观看| 久久久久亚洲爆乳少妇无| 亚洲人成网站18禁止久久影院| 日韩在线观看免费| 国产一卡二卡四卡免费| 国产成人精品日本亚洲专区 | 亚洲午夜理论片在线观看| 成人自慰女黄网站免费大全| 99久久免费国产精品特黄|