日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

java设计模式——adapter模式

發布時間:2024/8/1 asp.net 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java设计模式——adapter模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

描述

將現有的模塊接口轉換一下,以適配新的接口需求,用于填補“現有的程序“和“所需的程序“之間差異。通常也會被稱為:wrapper(包裝)模式。

模式中的角色

adapter模式中有以下主要角色:
1. target(對象)
該角色負責定義所需的方法,描述需要adapter轉換之后的接口。
2. client(請求者)
轉換之后的接口使用者,client通過adapter訪問已有的舊接口。
3. adaptee(被適配者)
已經存在的舊接口實現者,提供老舊的接口實現,是需要adapter轉換的對象。
4. adapter(適配者)
是本模式的核心,用于將現有的接口轉換成需要的接口。

模式分類

在實際操作中,通常adapter模式有以下兩種形式:

  • 類適配器模式(使用繼承的適配器)
  • 對象適配器模式(使用委托的適配器)
  • 為了方便描述,這里我們舉一個實際的例子,這里的例子就是廣告條幅展示的例子。現有的廣告條幅展示形式有帶有括號的展示方式:
    (這里是廣告的內容)
    還有帶有星號的形式:
    *這里是廣告的內容*
    這是目前已有的兩種形式。現在有一個新的電子廣告展示器,可以展示加粗和不加粗的字體廣告,加粗的形式就是使用星號將廣告的內容包含起來,就像上面的形式;不加粗的就是使用括號將廣告內容包含起來,也是和上面的一樣。
    現在的做法就是做一個適配器,使用這個適配器adapter將老的廣告展示轉換成新的廣告展示形式
    這個例子中涉及的模式角色有:

    • target——新的廣告展示形式
    • client——廣告投遞商
    • adaptee——舊的廣告展示牌
    • adapter——適配器,需要實現的

    涉及到的java類有:

    • IPrint——這是一個接口,對應target
    • Main——這是主類,對應client
    • Banner——這是舊的廣告展示實現,對應adaptee
    • PrintBanner——這是廣告展示轉換器,對應adapter

    類適配器模式

    類適配器模式使用類繼承和接口實現的方式實現,類圖描述如下:

    代碼如下:

    IPrint

    /************************************************************************* > File Name: IPrint.java > Author: CreateChance > Mail: createchance@163.com > Created Time: Fri Mar 2 11:29:26 2018************************************************************************/ public interface IPrint { void printWeak(); void printStrong(); } /*************************************************************************> File Name: Banner.java> Author: CreateChance> Mail: createchance@163.com > Created Time: Fri Mar 2 11:30:10 2018************************************************************************/ public class Banner {private String name;public Banner(String name) {this.name = name;}public void showWithParen() {System.out.println("(" + name + ")");}public void showWithAster() {System.out.println("*" + name + "*");} }

    PrintBanner

    /*************************************************************************> File Name: PrintBanner.java> Author: CreateChance> Mail: createchance@163.com > Created Time: Fri Mar 2 11:32:59 2018************************************************************************/ public class PrintBanner extends Banner implements IPrint {public PrintBanner(String name) {super(name);}@Overridepublic void printWeak() {super.showWithParen();}@Overridepublic void printStrong() {super.showWithAster();} }

    Main

    /************************************************************************* > File Name: Main.java > Author: CreateChance > Mail: createchance@163.com > Created Time: Fri Mar 2 11:35:06 2018************************************************************************/ public class Main { public static void main(String argv[]) { // 這里我們使用IPrint類型,就是為了面向接口,而不是面向具體實現類。 // 因為Main作為一個client對象,只需要直接接口定義就行了,不需要知道實現 IPrint printer = new PrintBanner("This is banner."); printer.printWeak(); printer.printStrong(); } }

    對象適配器模式

    和類適配器模式不同的是,對象適配器模式使用的組合模式實現,也就是委托。將自己需要完成的一些工作,委托給別的對象完成。上面的類適配器模式中,我們將PrintBanner類繼承自Banner來獲得Banner的能力,其實我們還可以通過委托來實現。具體的做法就是在PrintBanner中加入一個內部字段,類型就是Banner。通過內部持有的Banner對象來訪問Banner的方法。所做的修改就是將類適配模式中的PrintBanner修改為如下:

    /*************************************************************************> File Name: PrintBanner.java> Author: CreateChance> Mail: createchance@163.com > Created Time: Fri Mar 2 11:37:43 2018************************************************************************/ public class PrintBanner implements IPrint {private Banner banner;public PrintBanner(String name) {banner = new Banner(name);}@Overridepublic void printWeak() {banner.showWithParen();}@Overridepublic void printStrong() {banner.showWithAster();} }

    類圖描述如下:

    總結

    以上是生活随笔為你收集整理的java设计模式——adapter模式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。