91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

設計模式系列之什么是適配器模式

發布時間:2021-10-19 09:16:25 來源:億速云 閱讀:115 作者:iii 欄目:開發技術

這篇文章主要介紹“設計模式系列之什么是適配器模式”,在日常操作中,相信很多人在設計模式系列之什么是適配器模式問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”設計模式系列之什么是適配器模式”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

1、概述

適配器模式是一種結構型設計模式, 它能使接口不兼容的對象能夠相互合作。

2、適用場景

1)當你希望使用某個類, 但是其接口與其他代碼不兼容時, 可以使用適配器類。

2)如果您需要使用這樣一些類, 他們處于同一個繼承體系, 并且他們又有了額外的一些共同的方法,  但是這些共同的方法不是所有在這一繼承體系中的子類所具有的共性。可以將這些方法封裝在一個裝飾器中。

3、實例

有以下場景:

方釘適配圓孔的適配器,方釘想放到圓孔中,則圓孔的直徑等于方釘的對角長度。

方釘適配圓孔的適配器,方釘想放到圓孔中,則圓孔的直徑等于方釘的對角長度。  定義方釘、圓孔  圓孔: 直徑  圓釘: 直徑  方釘: 邊長

定義方釘:

public class SquareNails {      public double getWidth() {         return width;     }      public void setWidth(double width) {         this.width = width;     }      public SquareNails(double width) {         this.width = width;     }      /**      * 邊長      */     private double width;  }

定義圓釘:

public class RoundNails {      /**      * 直徑      */     private double diameter;      public double getDiameter() {         return diameter;     }      public void setDiameter(double diameter) {         this.diameter = diameter;     }      public RoundNails(double diameter) {         this.diameter = diameter;     } }

定義圓孔:

public class RoundHold {      /**      * 直徑      */     private double diameter;      public RoundHold(double diameter) {         this.diameter = diameter;     }      public double getDiameter() {         return diameter;     }      public void setDiameter(double diameter) {         this.diameter = diameter;     }      /**      * 校驗是否合適      * @param roundNails      * @return      */     public boolean fits(RoundNails roundNails){         if (diameter >= roundNails.getDiameter()){             return true;         }else {             return false;         }      } }

定義適配器:

public class SquareNailsRoundHoldAdapter {      public RoundNails getResult(SquareNails squareNails){         double width = squareNails.getWidth();         double diagonal = width * Math.sqrt(2);         RoundNails roundNails = new RoundNails(diagonal);         return roundNails;     } }

測試類:

@RunWith(SpringRunner.class) @SpringBootTest(classes = TestApplication.class) public class TestDemo {      @Test     public void test() {         //定義個圓孔         RoundHold roundHold = new RoundHold(10);         //定義圓釘         RoundNails roundNails = new RoundNails(10);         //定義方釘,邊距10         SquareNails squareNails10 = new SquareNails(10);         //定義方釘,邊距6         SquareNails squareNails6 = new SquareNails(6);         //適配器         SquareNailsRoundHoldAdapter squareNailsRoundHoldAdapter = new SquareNailsRoundHoldAdapter();         RoundNails result10 = squareNailsRoundHoldAdapter.getResult(squareNails10);         RoundNails result6 = squareNailsRoundHoldAdapter.getResult(squareNails6);         //圓釘是否合適         if (roundHold.fits(roundNails)) {             System.out.println("this round nails is fits");         } else {             System.out.println("this round nails is does not fits");         }         //10方釘是否合適         if (roundHold.fits(result10)) {             System.out.println("squareNails10 is fits");         } else {             System.out.println("squareNails10 is does not fits");         }         //6方釘是否合適         if (roundHold.fits(result6)) {             System.out.println("squareNails6 is fits");         } else {             System.out.println("squareNails6 is does not fits");         }     } }

結果:

this round nails is fits squareNails10 is does not fits squareNails6 is fits

4、總結

優點:

1)單一原則:將代碼或者數據轉換的過程從主要業務邏輯區分出來。

2)開閉原則:只要客戶端代碼通過客戶端接口與適配器進行交互, 你就能在不修改現有客戶端代碼的情況下在程序中添加新類型的適配器。

缺點:

增加代碼復雜度。使用時需要考慮是否在原功能上修改更加簡單。

到此,關于“設計模式系列之什么是適配器模式”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

仁怀市| 新郑市| 武强县| 泉州市| 邻水| 吉木萨尔县| 株洲市| 安义县| 达孜县| 彭阳县| 仪陇县| 广安市| 黑龙江省| 仪征市| 荔波县| 会泽县| 阳高县| 松桃| 内乡县| 太原市| 金溪县| 富源县| 康乐县| 饶阳县| 永济市| 吉林市| 磐安县| 玉山县| 南京市| 泗阳县| 石楼县| 财经| 澜沧| 名山县| 抚州市| 泗洪县| 屏东市| 定结县| 宁都县| 沁源县| 宜昌市|