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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

设计模式之Adapter设计模式

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

?這個設計模式是我這兩天剛學的,這兒算是我的讀書筆記發布出來是供大家一起學習,后面有我自己的感悟,下面是我網上整理的

?

以下情況使用適配器模式
? 你想使用一個已經存在的類,而它的接口不符合你的需求。
? 你想創建一個可以復用的類,該類可以與其他不相關的類或不可預見的類(即那些接口可能不一定兼容的類)協同工作。
? (僅適用于對象Adapter)你想使用一些已經存在的子類,但是不可能對每一個都進行子類化以匹配它們的接口。對象適配器可以適配它的父類接口。
?

其實現方式主要有兩種:
類適配器


?

對象適配器

其中:
? Target
— 定義Client使用的與特定領域相關的接口。
? Client
— 與符合Ta rg e t接口的對象協同。
? Adaptee
— 定義一個已經存在的接口,這個接口需要適配。
? Adapter
— 對Adaptee的接口與Target接口進行適配


具體的實現代碼如下:
類適配器

  • package?com.visionsky.DesignPattern;?
  • ?
  • interface?Target?{?
  • ????void?Request();?
  • }?
  • ?
  • class?Adaptee?{?
  • ????void?SpecificRequst()?{?
  • ????????System.out.println("Adaptee's?SpecificRequst");?
  • ????}?
  • }?
  • ?
  • class?Adapter?extends?Adaptee?implements?Target??
  • {?
  • ?
  • ????@Override?
  • ????public?void?Request()?{?
  • ?????????System.out.println("Adapter's?Request");?
  • ??????????super.SpecificRequst();?
  • ????}?
  • ?
  • }?
  • ?
  • public?class?AdapterDemo?{?
  • ?
  • ????/**?
  • ?????*?@param?args?
  • ?????*/?
  • ????public?static?void?main(String[]?args)?{?
  • ????????//?TODO?Auto-generated?method?stub?
  • ????????Target?t=new?Adapter();?
  • ????????t.Request();?
  • ????}?
  • ?
  • }
  • //我的點評:類適配器存在不靈活的地方因為他為了實現Adaptee 里的特殊需求而使用了繼承,我們知道繼承在OO里其實破壞了類的封裝性,這里如果被繼承的類Adaptee 改動一下那么Adapter類也會隨之改變這就破壞了OO里的原則破壞 了類的封裝性
  • //而如果使用下面的對象適配器的話就不會出現這個問題,上面是完全寫死了的一種適配器不靈活,而下面你其實也可以通過傳入一個你需要適配的類型參數(使用泛T)如Adaptee 的類型然后使用反射動態創建出該類型的實例,使用現在流行的T4模板還可以創建出多種不同需求的適配器類型。
  • ?對象適配器

  • package?com.visionsky.DesignPattern;?
  • ?
  • interface?Target?{?
  • ????void?Request();?
  • }?
  • ?
  • class?Adaptee?{?
  • ????void?SpecificRequst()?{?
  • ????????System.out.println("Adaptee's?SpecificRequst");?
  • ????}?
  • }?
  • ?
  • class?Adapter??implements?Target??
  • {?
  • ?
  • ????private?Adaptee?adaptee;?
  • ????public?Adapter()?
  • ????{?
  • ????????this.adaptee=new?Adaptee();?
  • ????}?
  • ?????
  • ????@Override?
  • ????public?void?Request()?{?
  • ?????????System.out.println("Adapter's?Request");?
  • ?????????adaptee.SpecificRequst();?
  • ????}?
  • ?
  • }?
  • ?
  • public?class?AdapterDemo?{?
  • ?
  • ????/**?
  • ?????*?@param?args?
  • ?????*/?
  • ????public?static?void?main(String[]?args)?{?
  • ????????//?TODO?Auto-generated?method?stub?
  • ????????Target?t=new?Adapter();?
  • ????????t.Request();?
  • ????}?
  • ?
  • }?
  • 生活中的例子:
    在生活中最簡單的例子就是電源適配器,如手機適配器,我們的家用電源是220V的,但是,對于手機來說,根本大不了這么多,所以,在這種情況下,需要電源適配器來為我們提供適合手機的電壓。
    ?

  • package?com.visionsky.DesignPattern;?
  • ?
  • public?class?AdaterDemoInLife?{?
  • ?
  • ????/**?
  • ?????*?@param?args?
  • ?????*/?
  • ????public?static?void?main(String[]?args)?{?
  • ????????//?TODO?Auto-generated?method?stub?
  • ????????MobilePowerAdapter?mpa=new?MobilePowerAdapter();?
  • ????????mpa.GetPower10V();?
  • ????}?
  • ?
  • }?
  • ?
  • interface?ITarget?{?
  • ????int?GetPower10V();?
  • }?
  • ?
  • class?Power?{?
  • ????int?GetPower220V()?{?
  • ?????????return?220;?
  • ????}?
  • }?
  • ?
  • class?MobilePowerAdapter??implements?ITarget??
  • {?
  • ????private?Power?power;?
  • ????public?MobilePowerAdapter(?)?{?
  • ??????????
  • ????????this.power?=?new?Power();?
  • ????}?
  • ?????
  • ????@Override?
  • ????public?int?GetPower10V()?{?
  • ????????//?TODO?Auto-generated?method?stub?
  • ?????????power.GetPower220V();?
  • ?????????//將220v轉變成10v,具體做法就不寫了,?大家明白就行?
  • ?????????return?10;?
  • ????}?
  • }?
  • ?

    本文出自 “學習筆記” 博客,請務必保留此出處http://visionsky.blog.51cto.com/733317/384607

    更多 0
    0人 了這篇文章
    類別:設計模式┆閱讀(2461)┆評論(2) ┆ 返回博主首頁┆返回博客首頁

    轉載于:https://www.cnblogs.com/kexb/p/3666334.html

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

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

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