欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Adapter - 適配器模式 - 設計模式 - Java - JavaEye論壇
意圖
將一個(gè)類(lèi)的接口轉換成客戶(hù)希望的另外一個(gè)接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類(lèi)可以一起工作。(GoF)

場(chǎng)景
相信很多人都知道什么是顯卡,也有很多人知道顯卡的本名——圖形適配器。恩,是的,正好這回說(shuō)說(shuō)Apater模式,就拿顯卡來(lái)例子來(lái)分析一下Adapter模式。

我們知道顯示器(Client)是用來(lái)顯示圖形的,它是不能顯示數據,它只能夠接受來(lái)自圖形發(fā)送設備Target的信號??墒俏覀兪诸^上只有CPU(Adaptee)這個(gè)產(chǎn)生各種描述圖形的數據的數據發(fā)送器。我們需要將這些數據讓顯示器進(jìn)行顯示,可是這兩個(gè)部件卻是不兼容的。于是我們需要一個(gè)中間設備,它能夠將CPU“適配”于顯示器,這便是我們的顯卡——圖形適配器(Adapter)。

java 代碼
 
  1. // 圖形發(fā)送設備  
  2. public class Target {  
  3.     /** 
  4.      * 傳送圖形信號 
  5.      */  
  6.     public String request() {  
  7.         return "Graphic sender";  
  8.     }  


java 代碼
 
  1. // 顯示器  
  2. public class Client {  
  3.   
  4.     public static void main(String[] args) {  
  5.         Target target = new Targete();  
  6.         System.out.println(target.request());  
  7.     }  
  8. }  

可是我們的CPU(Adaptee)只能輸出0/1數據,他是個(gè)計算器,而不是圖形發(fā)送設備(Target)。

java 代碼
 
  1. // CPU  
  2. public class Adaptee {  
  3.     /** 
  4.      * CPU輸出的數據 
  5.      */  
  6.     public String getData() {  
  7.         return "CPU data";  
  8.     }  
  9. }  

這個(gè)時(shí)候我們的顯卡(Adapter)的作用便體現出來(lái)了,它負責對CPU進(jìn)行適配,通過(guò)將CPU傳過(guò)來(lái)的數據轉換成圖形信號,從而將CPU偽裝成一個(gè)圖形發(fā)送設備。

java 代碼
 
  1. // 顯卡,即我們的適配器  
  2. public class Adapter extends Target {  
  3.   
  4.     // 被代理的設備  
  5.     private Adaptee apt = null;  
  6.   
  7.     /** 
  8.      * 裝入被代理的設備 
  9.      */  
  10.     public Adapter(Adaptee apt) {  
  11.         this.apt = apt;  
  12.     }  
  13.   
  14.     /** 
  15.      * 被代理的設備傳過(guò)來(lái)的數據轉換成為圖形輸出 
  16.      */  
  17.     public String request() {  
  18.         return apt.getData();  
  19.     }  
  20. }  

這樣,我們的電腦的顯示流程就變成CPU-顯卡-顯示器:

java 代碼
 
  1. public class Client {  
  2.   
  3.     public static void main(String[] args) {  
  4.         // CPU經(jīng)過(guò)顯卡的適配后“變”成了圖形發(fā)送裝置了  
  5.         Target target = new Adapter(new Adaptee());  
  6.         System.out.println(target.request());  
  7.     }  
  8.       
  9. }  

上面的這種依賴(lài)于對象組合的Adapter模式叫做對象適配器(Object Adapter)。它的特征是繼承/實(shí)現某一方的類(lèi)(Target),如這里的圖形發(fā)送器,同時(shí)內部包含一個(gè)被適配的類(lèi)(Adaptee),如這里的CPU。通過(guò)重寫(xiě)其父類(lèi)的方法來(lái)進(jìn)行適配。

另一種的Adapter實(shí)現

對于A(yíng)dapter模式,還有另外一種實(shí)現方式,這種適配方式叫做類(lèi)適配器(Class Adapter)。它與Object Adapter的不同之處在于它繼承被適配的對象。

java 代碼
 
  1. public class Adapter extends Targer, Adaptee {  
  2.     ......  
  3. }  

這樣的代碼在C++中是合法的,但是在Java中規定最多只能繼承一個(gè)父類(lèi),而可以實(shí)現多個(gè)接口。所以我們需要建立一個(gè)IAdaptee的接口,然后將我們的Adapter繼承Target同時(shí)實(shí)現IAdaptee。

java 代碼
 
  1. // IAdaptee接口  
  2. public interface IAdaptee {    
  3.     String getData();  
  4. }   

java 代碼
 
  1. // Adaptee 實(shí)現IAdaptee 
  2. public class Adaptee implements IAdaptee {  
  3.   ......  
  4. }    

java 代碼
 
  1. public class Adapter extends Target implements IAdaptee {  
  2.   
  3.     private IAdaptee apt = null;  
  4.   
  5.     public Adapter(IAdaptee apt) {  
  6.         this.apt = apt;  
  7.     }  
  8.   
  9.     public String request() {  
  10.         return apt.getData();  
  11.     }  
  12.   
  13.     public String getData() {  
  14.         return apt.getData();  
  15.     }  
  16. }  

對于我們的顯示器(Client)方面,Class Adapter跟Object Adapter一樣,所以不需要進(jìn)行修改。

對于Class Adapter,大家也看見(jiàn)了,在A(yíng)dapter中因為是實(shí)現了IAdaptee接口,因此需要實(shí)現getData()的接口。一旦Target和IAdaptee擁有相同的方法時(shí),會(huì )出現麻煩的。所以盡量?jì)?yōu)先使用Object Adapter的模式。

小結
作為總結,我覺(jué)得顯卡本身的定義便很能表達Apater設計模式:“它是主機與顯示器之間連接的“橋梁”,作用是控制電腦的圖形輸出,負責將CPU送來(lái)的的影象數據處理成顯示器認識的格式,再送到顯示器形成圖象。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
電腦顯卡怎么看?
顯卡是什么意思|顯卡是什么?什么是顯卡?顯卡是什么樣子的?
[設計模式] 設計模式課程(十三)--適配器模式
Java設計模式 之 Adapter
結構型模式之適配器模式
顯卡有什么用? 如何看顯卡好壞?
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久