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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

设计模式之四:适配器模式(Adapter Pattern)

發布時間:2025/4/5 asp.net 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式之四:适配器模式(Adapter Pattern) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????? 在軟件系統中,由于應用環境的變化,常常需要將“一些現存的對象”放在新的環境中應用,但是新環境要求的接口是這些現存對象所不滿足的。如果能既能利用現有對象的良好實現,同時又能滿足新的應用環境所要求的接口?這就是適配器模式要解決的問題。

目的:將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。

下面以日志記錄程序為例子說明Adapter模式。假設我們在軟件開發中要記錄日志,包括數據庫記錄日志DatabaseLog和文本文件記錄日志WriteLog.現有日志接口為:

類圖實現:                       

                        

public abstract class Log

??? {

??????? public abstract void WriteLog();

??? }

?

??? public class DatabaseLog : Log

??? {

??????? public override void WirteLog()

??????? {

??????????? Console.WriteLine("called database log");

??????? }

??? }

??? public class FileLog : Log

??? {

??????? public override void WirteLog()

??????? {

??????????? Console.WriteLine("called File log");

?????? ?}

??? }

?

但是開發過程需要引入一個新的日志接口,但新的日志接口和以前的不一樣,該接口如下:public interface Ilog

??? {

??????? void Write();

??? }

?

由于前后兩個接口都不能修改,那么如何來適配前后兩種情況,從而使原來的對象適應新的接口呢?

其實有兩種思路:一個是類適配模式,另一個對象適配模式。類適配模式是通過類的繼承機制來實現,而對象適配機制通過對象的組合來實現。

1.類適配模式類圖實現:

                    

?

具體實現為:

public class DatabaseLogAdapter : DatabaseLog, Ilog

??? {

??????? public void Write()

??????? {

?????????? this.WirteLog();

??????? }

??? }

??? public class FileLogAdapter : FileLog, Ilog

??? {

??????? public void Write()

??????? {

??????????? this.WirteLog();

??????? }

??? }

?

  • 對象適配模式實現類圖:
  • ?            

                    

    代碼實現:

    //對象適配

    ??? public class LogAdapter : Ilog

    ??? {

    ??????? private Log log;

    ??????? public LogAdapter(Log log)

    ??????? {

    ??????????? this.log = log;

    ??????? }

    ??????? public void Write()

    ??????? {

    ??????????? log.WriteLog();

    ??????? }

    ??? }

    ?? 上兩種適配方式,可以看出在類適配方式中,是通過類的繼承來實現的,同時也具有接口ILog的所有行為,這些就違背了面向對象設計原則中的類的單一職責原則,而對象適配器則是通過對象組合的方式來實現的,則符合面向對象的精神,所以推薦用對象適配的模式。

    實現要點:

  • Adapter模式主要應用于“希望復用一些現存的類,但是接口又與復用環境要求不一致的情況”,在代碼復用,類庫遷移等方面非常有用。
  • Adapter模式有對象適配器和類適配器兩種形式的實現結構,但是類適配器采用“多繼承”的實現方式,帶來了不良的高耦合,而對象適配器采用“對象組合”的方式,更符合松耦合。
  • Adapter模式本身要求我們盡可能的使用“面向接口編程”風格,這樣才能在后期很方便的適配。
  • 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

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

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