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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java的二十三种设计模式(适配器模式(Adapter)、对象的适配器模式)

發(fā)布時(shí)間:2024/8/26 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java的二十三种设计模式(适配器模式(Adapter)、对象的适配器模式) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

適配器模式(Adapter)

適配器模式將某個(gè)類的接口轉(zhuǎn)換成客戶端期望的另一個(gè)接口表示,目的是消除由于接口不匹配所造成的類的兼容性問(wèn)題。主要分為三類:類的適配器模式、對(duì)象的適配器模式、接口的適配器模式。首先,我們來(lái)看看類的適配器模式,先看類圖:

核心思想就是:有一個(gè)Source類,擁有一個(gè)方法,待適配,目標(biāo)接口時(shí)Targetable,通過(guò)Adapter類,將Source的功能擴(kuò)展到Targetable里,看代碼:

public class Source {public void method1() {System.out.println("this is original method!");} } public interface Targetable {/* 與原類中的方法相同 */public void method1();/* 新類的方法 */public void method2(); } public class Adapter extends Source implements Targetable {@Overridepublic void method2() {System.out.println("this is the targetable method!");} } public class Adapter extends Source implements Targetable {@Overridepublic void method2() {System.out.println("this is the targetable method!");} }

Adapter類繼承Source類,實(shí)現(xiàn)Targetable接口,下面是測(cè)試類:

public class AdapterTest {public static void main(String[] args) {Targetable target = new Adapter();target.method1();target.method2();} }

輸出:

this is original method!
this is the targetable method!

這樣Targetable接口的實(shí)現(xiàn)類就具有了Source類的功能。

對(duì)象的適配器模式

基本思路和類的適配器模式相同,只是將Adapter類作修改,這次不繼承Source類,而是持有Source類的實(shí)例,以達(dá)到解決兼容性的問(wèn)題。看圖:

只需要修改Adapter類的源碼即可:

public class Wrapper implements Targetable {private Source source;public Wrapper(Source source){super();this.source = source;}@Overridepublic void method2() {System.out.println("this is the targetable method!");}@Overridepublic void method1() {source.method1();} }

測(cè)試類:

public class AdapterTest {public static void main(String[] args) {Source source = new Source();Targetable target = new Wrapper(source);target.method1();target.method2();} } public class AdapterTest {public static void main(String[] args) {Source source = new Source();Targetable target = new Wrapper(source);target.method1();target.method2();} }

輸出與第一種一樣,只是適配的方法不同而已。

第三種適配器模式是接口的適配器模式,接口的適配器是這樣的:有時(shí)我們寫(xiě)的一個(gè)接口中有多個(gè)抽象方法,當(dāng)我們寫(xiě)該接口的實(shí)現(xiàn)類時(shí),必須實(shí)現(xiàn)該接口的所有方法,這明顯有時(shí)比較浪費(fèi),因?yàn)椴⒉皇撬械姆椒ǘ际俏覀冃枰?#xff0c;有時(shí)只需要某一些,此處為了解決這個(gè)問(wèn)題,我們引入了接口的適配器模式,借助于一個(gè)抽象類,該抽象類實(shí)現(xiàn)了該接口,實(shí)現(xiàn)了所有的方法,而我們不和原始的接口打交道,只和該抽象類取得聯(lián)系,所以我們寫(xiě)一個(gè)類,繼承該抽象類,重寫(xiě)我們需要的方法就行。看一下類圖:

這個(gè)很好理解,在實(shí)際開(kāi)發(fā)中,我們也常會(huì)遇到這種接口中定義了太多的方法,以致于有時(shí)我們?cè)谝恍?shí)現(xiàn)類中并不是都需要。看代碼:

public interface Sourceable {public void method1();public void method2(); }

抽象類Wrapper2:

public abstract class Wrapper2 implements Sourceable{public void method1(){}public void method2(){} } public class SourceSub1 extends Wrapper2 {public void method1(){System.out.println("the sourceable interface's first Sub1!");} } public class SourceSub2 extends Wrapper2 {public void method2(){System.out.println("the sourceable interface's second Sub2!");} } public class WrapperTest {public static void main(String[] args) {Sourceable source1 = new SourceSub1();Sourceable source2 = new SourceSub2();source1.method1();source1.method2();source2.method1();source2.method2();} }

測(cè)試輸出:

the sourceable interface's first Sub1!
the sourceable interface's second Sub2!

達(dá)到了我們的效果!

?講了這么多,總結(jié)一下三種適配器模式的應(yīng)用場(chǎng)景:

類的適配器模式:當(dāng)希望將一個(gè)類轉(zhuǎn)換成滿足另一個(gè)新接口的類時(shí),可以使用類的適配器模式,創(chuàng)建一個(gè)新類,繼承原有的類,實(shí)現(xiàn)新的接口即可。

對(duì)象的適配器模式:當(dāng)希望將一個(gè)對(duì)象轉(zhuǎn)換成滿足另一個(gè)新接口的對(duì)象時(shí),可以創(chuàng)建一個(gè)Wrapper類,持有原類的一個(gè)實(shí)例,在Wrapper類的方法中,調(diào)用實(shí)例的方法就行。

接口的適配器模式:當(dāng)不希望實(shí)現(xiàn)一個(gè)接口中所有的方法時(shí),可以創(chuàng)建一個(gè)抽象類Wrapper,實(shí)現(xiàn)所有方法,我們寫(xiě)別的類的時(shí)候,繼承抽象類即可。

總結(jié)

以上是生活随笔為你收集整理的Java的二十三种设计模式(适配器模式(Adapter)、对象的适配器模式)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久夜夜操 | 成人在线观看国产 | 成人福利网站在线观看 | 中国二级毛片 | 丰满放荡岳乱妇91ww | 丁香久久婷婷 | 成人在线天堂 | 午夜有码| 免费成人av在线 | 欧美黑人粗大 | 久久久久久黄 | av在线小说 | 欧美一区,二区 | 中文字幕 自拍偷拍 | 黑人巨大精品人妻一区二区 | 狠狠v欧美v日韩v亚洲ⅴ | 日本中文在线播放 | 国产男女猛烈无遮挡免费视频 | 热久久国产精品 | 青青草国产在线播放 | 高清成人免费视频 | 国产午夜精品在线观看 | 日韩欧美色 | 精品乱码一区二区三区四区 | 亚洲国产精品视频 | 青青草免费看 | a级免费网站 | 成人理论影院 | 国产大屁股喷水视频在线观看 | 91精品国产一区 | 婷婷干 | 国产精品久久久久久久久久免费看 | 91亚洲国产成人久久精品网站 | 熟女毛毛多熟妇人妻aⅴ在线毛片 | 高潮疯狂过瘾粗话对白 | 一区二区日韩av | 日韩亚洲影院 | 精人妻一区二区三区 | 看一级黄色片 | 一起操在线观看 | 亚洲国产精品久久久久爰色欲 | 国产精品久久久久久久久久 | 日韩一区二区免费视频 | 特一级黄色大片 | 在线观看你懂的网址 | 特高潮videossexhd | 91亚洲精品乱码久久久久久蜜桃 | 国产成人一级 | 欧美日韩不卡一区二区三区 | 亚洲精品~无码抽插 | 成人综合网站 | 99久久精品国产色欲 | 欧美国产成人精品一区二区三区 | 亚洲国产欧洲 | 999免费 | 天堂va欧美ⅴa亚洲va一国产 | 91蜜桃传媒精品久久久一区二区 | 免费裸体美女网站 | 男插女视频在线观看 | 中文字幕av久久爽 | 中国一级大黄大黄大色毛片 | 天天操操操操操 | 91精品视频国产 | 亚欧精品视频一区二区三区 | 日韩网站免费观看 | 午夜日韩av | 国产麻豆一区二区三区 | 国产在线视频福利 | 成人一区二区三区在线 | 精品久久久久中文慕人妻 | 91精品国产乱码久久久久久久久 | 亚洲日本韩国在线 | 天天干天天透 | 国产一级二级在线观看 | 天天躁夜夜躁狠狠是什么心态 | 久操精品| 国产性在线 | 亚洲最大网站 | 中国新婚夫妻性猛交 | 免费一级特黄3大片视频 | 成人妇女淫片aaaa视频 | 亚洲综合自拍偷拍 | 色播五月激情五月 | 骚婷婷| 在线观看亚洲 | 一卡二卡三卡 | 中文字幕不卡 | 国产又大又长又粗 | 永久免费AV无码网站韩国毛片 | av爽妇网 | 中国精品久久 | 2020国产在线 | 久久久久九九九 | 天天爽av | 午夜影院男女 | 加勒比一区二区 | 鬼眼| 日本在线一区二区三区 | 涩涩网站免费 |