1. 程式人生 > >面試中問到的Java IO中涉及到哪些設計模式

面試中問到的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裡。

文章只是作為自己的學習筆記,借鑑了網上的許多案例,如果覺得闊以的話,希望多交流,在此謝過…

相關推薦

面試:Mybatis使用了哪些設計模式

## 前言 雖然我們都知道有26個設計模式,但是大多停留在概念層面,真實開發中很少遇到,Mybatis原始碼中使用了大量的設計模式,閱讀原始碼並觀察設計模式在其中的應用,能夠更深入的理解設計模式。 ![](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e

面試到的Java IO涉及哪些設計模式

由於對設計模式還不太瞭解,沒有回答上來。 一、解釋 Java IO中涉及到介面卡模式以及裝飾者模式。現舉例如下: 1、介面卡模式 //file 為已定義好的檔案流 FileInputStream fileInput = new FileInputS

JavaIO面試有時會java io的問題)

深入分析Java I/O 工作機制 作者:egg IO是Java及眾多程式語言很重要的一塊,同時很多程式的瓶頸和耗時操作也都在IO這塊。所以能夠很好的解決IO問題對提高程式效能有很大的幫助!本章我們將要系統的對Java IO做個分析,通

struts如何實現國際化,涉及哪些文件?

客戶端 用戶界面 人員 客戶 web.xml undle .text bsp java struts中如何實現國際化,涉及哪些文件? 解答:“國際化”是指一個應用程序在運行時能夠根據客戶端請求所來自的國家/地區、語言的不同而顯示不同的用戶界面。Struts框架通過使用&

Java IO轉換流的作用

utf except image code 需要 cep inf java網絡編程 解析 在《Java網絡編程》中,有這樣一段話: ”Reader和Writer最重要的子類是InputStreamReader和OutputStreamWriter類。 InputStream

spring設計模式面試問題:spring中用了哪些設計模式

設計模式作為工作學習中的枕邊書,卻時常處於勤說不用的尷尬境地,也不是我們時常忘記,只是一直沒有記憶。 今天,螃蟹在IT學習者網站就設計模式的內在價值做一番探討,並以spring為例進行講解,只有領略了其設計的思想理念,才能在工作學習中運用到“無形”。 Spring作為業界的經典框架,無論是在架構設計方面

java怎麼記憶io的in,out,read,write(輸入輸出相關的)

java中怎麼記憶io中的in,out,read,write(輸入輸出相關的) 我們這個輸入輸出都是相對於記憶體,你把自己想成一個記憶體。你本地c盤的文件是屬於磁碟的也不是記憶體的。執行的時候,就是在記憶體執行,比如程式中new的一個數組等(可以用來作快取或者容器)。 把記憶體想成一個會讀會

Java IO幾個主要類介紹和使用

1. I/O流可以有三種分類方法. 第一, 輸入流,輸出流 . 第二, 位元組流,字元流 . 第三, 節點流(真正直接處理資料的) ,處理流(裝飾加工節點流的) . 2. 位元組流 抽象類 <– 面向位元組的檔案流 . InputStream <–

介面卡模式JAVA IO的例子

介面卡模式的定義: 將一個類的介面轉換成客戶希望的另外一個介面,使得原本由於介面不相容而不能一起工作的那些類可以一起工作 在JAVA IO中,一個常見的場景: 解析一個文字檔案,逐行處理其中的字串,程式碼如下: BufferedReader br = new Buffer

java.io常用的流的功能及特性

IO常用流的功能及特性: 輸入流inputStream:只能從中讀取位元組資料,而不能向其寫出資料 輸出流OutputStream:只能向其寫入位元組資料,而不能從中讀取資料 輸入流inputStream: 1. dataOutputStream建立一個新的資料輸出流,將資料寫入指定基礎輸出流。 2. pr

面試:Mybatis的TypeHandler你用過嗎?

持續原創輸出,點選上方藍字關注我吧 目錄 前言環境配置什麼是TypeHandler? 如何自定義?如何將其新增到Mybatis中?XML檔案中如何指定TypeHandler? 原始碼中如何執行TypeHandler? 入參如何轉換?結果如何轉換?總結 總結 前言 相信大家用Mybatis這個框架至

Yii 使用了哪些設計模式

單例模式 public function set($class, $definition = [], array $params = []) { // 規範化 $definition 並寫入 $_definitions[$class] $this->_definitions

如何將JSPjava程式碼的值,傳入JS程式碼

經過大半天的研究摸索,終於弄明白怎麼把JSP中的java程式碼中的值,傳入JS程式碼中去。 由於自己才剛剛開始接觸javaWEB 開發,今天在那兒做使用者登入功能,使用者在未登入時顯示“登入”連結,登入後在原來“登入”的地方,改變為使用者的暱稱!由於自己一點經驗也沒有,以為就一個session就夠了,在

java基礎】單例設計模式:保證一個類在記憶體的物件唯一性

摘要:單例設計模式解決的問題就是可以保證一個類在記憶體中的物件唯一性,必須對於多個程式使用同一個配置資訊物件時,就需要保證物件的唯一性。 單例設計模式有兩個表現形式:餓漢式和懶漢式。餓漢式開發時常用,

grails專案java呼叫service方法

最近寫java多執行緒時需要呼叫service,嘗試後唯一下方法可行:   以task.java裡呼叫smsStackService內方法testSingleMt()方法為例   1).在resources.groovy內   beans = {     myBean(co

java的監聽機制——觀察者設計模式詳解

好久沒有做筆記了,我發現研究過一個東西后忘的很快,等下次遇到後還得重新查資料學,倒不如寫篇筆記記錄一下下次遇到相同的問題後查查筆記瞬間就知道了,從而節省了好多時間,今天心血來潮哈哈,寫一篇簡單的筆記

Springmvcjava程式碼獲取國際化內容

如果是使用struts2的話,很容易實現,只要任意一個類繼承 ActionSupport ,然後就可以使用getText()獲取了。 在Spring中怎麼實現呢? 此處介紹一個較為簡單的實現,當然也有其他方式可以實現。 xml配置檔案都一樣 <

androidjava程式碼獲得每日,每週,每月的0點和24點的時間戳

//獲得本週一0點時間 public static int getTimesWeekmorning(){ Calendar cal = Calendar.getInstance(); cal.set(cal.get(Calendar.YEAR),cal.get(Calendar.MONDAY), cal.ge

JDK涉及設計模式總結

所有的設計模式都找了一種JDK中的實現(並未列出所有,原因是太多,而且本次整理的目的是通過JDK中的例項完成設計模式的梳理和記憶,所以只寫一種實現)。依次對類,對應的方法,功能進行介紹。

[紙上談兵]Java IO詳解(四) Reactor模式

一、 Reactor中文解釋 Reactor模式翻譯成中文有的說是反應器,有的說是反應堆模式。 中文解釋 反應:因為事件所引發的迴應。名詞. 器: 容器, 例如:用來存放水之類的物體. 堆:   例如: 土堆.可以理解為土彙集到一起。 那麼 反應器:這個我個人理解,存放反應的容器