設計模式 介面卡模式

2021-10-23 20:42:19 字數 1785 閱讀 7892

在看介面卡模式之前,我們先來看乙個生活中的例子,比如你去國外旅遊需要給手機充電,但是我們知道插座有各種孔的,比如國標、美標、歐標、英標等等。假如此時只有乙個歐標的插座那你該怎麼辦呢?這個時候我們可以買一根多功能轉換插頭,這樣就 可以使用了。基於此我們就可以引出介面卡模式。

首先,我們來看一下介面卡模式的基本介紹。

介面卡模式將某個類的介面轉換成客戶端期望的另乙個介面表示,主要目的是相容因為介面不匹配不能一起工作的兩個類可以協同工作。其也叫做包裝器

介面卡模式屬於結構性模型

主要分為三類:類介面卡模式、物件介面卡模式、介面介面卡模式

接下來我們來看一下它的工作原理

介面卡模式:將一根類的介面轉換成另一種介面,讓原本介面不相容的類可以相容

從使用者的角度看不到適配著,是解耦的

使用者呼叫介面卡轉換出來的目標介面方法,介面卡再呼叫被適配者的相關介面方法

使用者收到反饋結果,感覺只是和目標接**互

1.類介面卡模式介紹

adapter類,通過繼承src類,實現dst類介面,完成src->dst的適配。

接下來我們會通過乙個例子具體來說明

2. 類介面卡應用例項

以生活中充電器的例子來講解,那麼充電器本身就是相當於adapter,220v交流電相當於src也就是被適配者,我們的目的dst是5v直流電

示例**

3.注意事項和細節物件介面卡和類的介面卡模式是相同的,只是將adapter類做修改,不是繼承src類,而是持有src類的例項,已解決相容性的問題。也就是說:持有src類,實現dst類介面,完成sr和dst的適配。

根據合成復用原則,在系統中盡量使用關聯關係來替代繼承關係,物件介面卡模式是介面卡模式常用的一種。『

接下來我們以生活中充電器的例子來講解介面卡,充電器本身相當於adapter,220v交流點相當於src也就是被是配置,我們的目的dst是5v直流電,使用物件介面卡模式來完成

注意事項和細節1.介面介面卡模式介紹

也叫做預設介面卡模式。

核心思路:當不需要全部實現介面提供的方法時,可先設計乙個抽象類實現介面,並為該介面中每個方法提供乙個預設實現,那麼該抽象類的子類可有選擇地覆蓋父類的某些方法來實現需求。

這種呢適用於乙個介面不想使用其所有的辦法的情況。

2.示例springmvc中的handleradapter,就使用了介面卡模式

springmvc處理請求流程回顧

使用handleradapter的原因分析

處理器型別不同,有多重實現方式(看下方handleradapter的實現類),那麼呼叫方式就不是固定的,如果需要直接呼叫controller方法,需要呼叫的時候就得不斷的使用if else來進行判斷是哪一種子類然後執行,那麼後面如果擴充套件controller,就得修改原來的**,這樣子違背了ocp原則。

handleradapter的實現子類使得每一種controller有一種對應的介面卡實現類,每種controller有不同的實現方式

三種命名方式,是根據src是以怎麼的形式給到adapter來命名的

類介面卡:以類給到,在adapter裡,就是將arx當做類,繼承

物件介面卡:以物件給到,在adapter裡,將src作為乙個物件持有

介面介面卡:以介面給到,在adapter裡,將src作為乙個介面,實現

adapter模式最大的作用是將原本不相容的介面融合在一起工作

設計模式 介面卡模式 類介面卡 物件介面卡

乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...

設計模式之介面卡模式(類介面卡模式)

介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...

設計模式 介面卡模式

01 02 author rollen holt 設計模式之 介面卡模式 03 04 05 inte ce window 11 12 abstract class windowadapter 16 public void close 19 public void activated 22 publi...