面試中問到的Java IO中涉及到哪些設計模式
由於對設計模式還不太瞭解,沒有回答上來。
一、解釋
Java IO中涉及到介面卡模式以及裝飾者模式。現舉例如下:
1、介面卡模式
//file 為已定義好的檔案流
FileInputStream fileInput = new FileInputStream(file);
InputStreamReader inputStreamReader = new InputStreamReader(fileInput);
以上就是介面卡模式的體現,FileInputStream是位元組流,而並沒有字元流讀取字元的一些api,因此通過InputStreamReader將其轉為Reader子類,因此有了可以操作文字的檔案方法。
2、裝飾者模式
BufferedReader bufferedReader=new BufferedReader(inputStreamReader);
構造了緩衝字元流,將FileInputStream位元組流包裝為BufferedReader過程就是裝飾的過程,剛開始的位元組流FileInputStream只有read一個位元組的方法,包裝為inputStreamReader後,就有了讀取一個字元的功能,在包裝為BufferedReader後,就擁有了read一行字元的功能。
二、定義
裝飾者模式:動態地將責任附加到物件上,若要擴充套件功能,裝飾者模提供了比繼承更有彈性的替代方案。
通俗的解釋:裝飾模式就是給一個物件增加一些新的功能,而且是動態的,要求裝飾物件和被裝飾物件實現同一個介面,裝飾物件持有被裝飾物件的例項。
介面卡模式:將一個類的介面,轉換成客戶期望的另一個介面。介面卡讓原本介面不相容的類可以合作無間。
介面卡模式有三種:類的介面卡模式、物件的介面卡模式、介面的介面卡模式。
通俗的說法:介面卡模式將某個類的介面轉換成客戶端期望的另一個介面表示,目的是消除由於介面不匹配所造成的類的相容性問題。
下面以類的介面卡模式舉例:
有一個Source類,擁有一個方法,待適配,目標介面時Targetable,通過Adapter類,將Source的功能擴充套件到Targetable裡。
文章只是作為自己的學習筆記,借鑑了網上的許多案例,如果覺得闊以的話,希望多交流,在此謝過…