亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java適配器模式_動力節(jié)點Java學院整理

 更新時間:2017年07月24日 11:07:09   作者:zy  
這篇文章主要介紹了Java適配器模式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一.概念

適配器模式將一個接口轉換成客戶希望的另外一個接口。它使得原來由于接口不兼容而不能在一起工作的那些類可以一起工作。

二.UML

 

三.更加生動的例子

四.實例分析

去年買了一個本本,另外給本本配了羅技G1光電套。坑爹的是,光電套的鼠標是USB接口,鍵盤是PS2接口,可我的本本卻沒有PS2接口啊。于是跑到市場,淘了一個轉接器。

于是乎,我抽象了這么幾個類。

1.PS2Port(PS2接口)。

2.USBPort(USB接口)。

3.PS2ToUSB(對象適配器),將PS2接口裝換成USB接口。

4.TestAdapter(測試類),客戶端。

PS2Port  

package com.bjpowernode.adapter; 
 
/** 
 * PS2接口,圓口 
 * @author eason 
 * 
 */ 
public interface PS2Port { 
  public void workWithPS2(); 
} 

 USBPort

package com.bjpowernode.adapter; 
 
/** 
 * USB接口,U口 
 * @author eason 
 * 
 */ 
public interface USBPort { 
  public void workWithUSB(); 
} 
 

PS2ToUSB

package com.bjpowernode.adapter; 
 
/** 
 * 對象適配器 
 * 將PS2接口裝換成USB接口 
 * 所以此類類型是USB接口(implements USBPort) + 成員變量ps2Port 
 * @author eason 
 * 
 */ 
public class PS2ToUSB implements USBPort{ 
 
  private PS2Port ps2Port; 
   
  public PS2ToUSB(PS2Port ps2Port) { 
    this.ps2Port = ps2Port; 
  } 
   
  @Override 
  public void workWithUSB() { 
    System.out.println("轉換的關鍵在這里,本來是"); 
    ps2Port.workWithPS2(); 
    System.out.println("經(jīng)過你的轉換,現(xiàn)在是USB工作中"); 
  } 
   
} 
 

TestAdapter

package com.bjpowernode.adapter; 
 
/** 
 * 測試類 
 * client 
 * @author eason 
 * 
 */ 
public class TestAdapter { 
 
  public static void main(String[] args) { 
    //我現(xiàn)在有一個PS2接口 
    PS2Port ps2Port = new PS2Port() { 
      @Override 
      public void workWithPS2() { 
        System.out.println("PS2工作中"); 
      } 
    }; 
     
    //但是我需要的是一個USB接口啊,對我(client)來說,我只認識USB接口 
    //經(jīng)過PS2ToUSB的轉換,PS2接口變成了USB接口 
    USBPort ps2ToUsbPort = new PS2ToUSB(ps2Port); 
     
    ps2ToUsbPort.workWithUSB(); 
     
  } 
 
} 

五.對象的適配器和類的適配器

上述的適配器就是對象適配器。再看看類適配器。

PS2ToUSB,只是簡單模擬一下。因為java不允許多繼承,所以java中沒有類模式的代碼,只有思想。

package com.bjpowernode.adapter; 
 
/** 
 * 類適配器 
 * @author eason 
 * 
 */ 
public class PS2ToUSB implements USBPort, PS2Port{ 
 
  //重寫workWithUSB,把工作交給workWithPS2 
  @Override 
  public void workWithUSB() { 
    workWithPS2(); 
  } 
   
} 

差別就是:對象適配器實現(xiàn)了客戶端想要的接口(USB),在內部有一個被適配對象(PS2)的引用,通過組合實現(xiàn)適配功能。類適配器實現(xiàn)了客戶端想要的接口(USB)和被適配對象接口(PS2),通過繼承來實現(xiàn)適配功能。

六.使用場景及使用感受

1.希望復用一些現(xiàn)存的類,但是接口又與復用環(huán)境要求不一致。

2.其實適配器模式有點無奈之舉,在前期設計的時候,我們就不應該考慮適配器模式,而應該考慮通過重構統(tǒng)一接口。

七.適配器模式與裝飾者模式

它們都可以用來包裝對象,本質區(qū)別在于

1.適配器模式:將一個接口轉換成另外一個接口。

2.裝飾者模式:不改變接口,只加入職責。

相關文章

  • Spring AOP與代理類的執(zhí)行順序級別淺析

    Spring AOP與代理類的執(zhí)行順序級別淺析

    這篇文章主要介紹了Spring AOP與代理類的執(zhí)行順序級別,關于 Spring AOP和Aspectj的關系,兩個都實現(xiàn)了切面編程,Spring AOP更多地是為了Spring框架本身服務的,而Aspectj具有更強大、更完善的切面功能
    2023-03-03
  • Elasticsearch?自動重啟腳本創(chuàng)建實現(xiàn)

    Elasticsearch?自動重啟腳本創(chuàng)建實現(xiàn)

    這篇文章主要為大家介紹了Elasticsearch?自動重啟腳本創(chuàng)建實現(xiàn)詳解分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • 在SpringBoot項目中實現(xiàn)給所有請求加固定前綴

    在SpringBoot項目中實現(xiàn)給所有請求加固定前綴

    這篇文章主要介紹了在SpringBoot項目中實現(xiàn)給所有請求加固定前綴,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java?精煉解讀數(shù)據(jù)結構的順序表如何操作

    Java?精煉解讀數(shù)據(jù)結構的順序表如何操作

    程序中經(jīng)常需要將一組數(shù)據(jù)元素作為整體管理和使用,需要創(chuàng)建這種元素組,用變量記錄它們,傳進傳出函數(shù)等。一組數(shù)據(jù)中包含的元素個數(shù)可能發(fā)生變化,順序表則是將元素順序地存放在一塊連續(xù)的存儲區(qū)里,元素間的順序關系由它們的存儲順序自然表示
    2022-03-03
  • SpringCloud HystrixDashboard服務監(jiān)控詳解

    SpringCloud HystrixDashboard服務監(jiān)控詳解

    Hystrix Dashboard 是Spring Cloud中查看Hystrix實例執(zhí)行情況的一種儀表盤組件,支持查看單個實例和查看集群實例,本文將對其服務監(jiān)控學習
    2022-11-11
  • 基于SpringBoot + Redis實現(xiàn)密碼暴力破解防護

    基于SpringBoot + Redis實現(xiàn)密碼暴力破解防護

    在現(xiàn)代應用程序中,保護用戶密碼的安全性是至關重要的,密碼暴力破解是指通過嘗試多個密碼組合來非法獲取用戶賬戶的密碼,為了保護用戶密碼不被暴力破解,我們可以使用Spring Boot和Redis來實現(xiàn)一些防護措施,本文將介紹如何利用這些技術來防止密碼暴力破解攻擊
    2023-06-06
  • 一文帶你掌握Java8中Lambda表達式 函數(shù)式接口及方法構造器數(shù)組的引用

    一文帶你掌握Java8中Lambda表達式 函數(shù)式接口及方法構造器數(shù)組的引用

    Java 8 (又稱為 jdk 1.8) 是 Java 語言開發(fā)的一個主要版本。 Oracle 公司于 2014 年 3 月 18 日發(fā)布 Java 8 ,它支持函數(shù)式編程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等
    2021-10-10
  • 詳解Java設計模式之橋接模式

    詳解Java設計模式之橋接模式

    橋接,顧名思義,就是用來連接兩個部分,使得兩個部分可以互相通訊。橋接模式將系統(tǒng)的抽象部分與實現(xiàn)部分分離解耦,使他們可以獨立的變化。本文通過示例詳細介紹了橋接模式的原理與使用,需要的可以參考一下
    2022-06-06
  • Java8接口默認靜態(tài)方法及重復注解原理解析

    Java8接口默認靜態(tài)方法及重復注解原理解析

    這篇文章主要介紹了Java8接口默認靜態(tài)方法及重復注解原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • 詳解MyBatis特性之動態(tài)SQL

    詳解MyBatis特性之動態(tài)SQL

    動態(tài) SQL 是 MyBatis 的強大特性之一,這篇文章我們將結合動態(tài)SQL完成更加復雜的 SQL 操作,文章通過代碼示例給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01

最新評論