程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 增添屬性和有用的接口

增添屬性和有用的接口

編輯:關於JAVA

利用層次化對象動態和透明地添加單個對象的能力的做法叫作“裝飾器”(Decorator)方案——“方案”屬於本書第16章的主題(注釋①)。裝飾器方案規定封裝於初始化對象中的所有對象都擁有相同的接口,以便利用裝飾器的“透明”性質——我們將相同的消息發給一個對象,無論它是否已被“裝飾”。這正是在Java IO庫裡存在“過濾器”(Filter)類的原因:抽象的“過濾器”類是所有裝飾器的基礎類(裝飾器必須擁有與它裝飾的那個對象相同的接口,但裝飾器亦可對接口作出擴展,這種情況見諸於幾個特殊的“過濾器”類中)。
子類處理要求大量子類對每種可能的組合提供支持時,便經常會用到裝飾器——由於組合形式太多,造成子類處理變得不切實際。Java IO庫要求許多不同的特性組合方案,這正是裝飾器方案顯得特別有用的原因。但是,裝飾器方案也有自己的一個缺點。在我們寫一個程序的時候,裝飾器為我們提供了大得多的靈活性(因為可以方便地混合與匹配屬性),但它們也使自己的代碼變得更加復雜。原因在於Java IO庫操作不便,我們必須創建許多類——“核心”IO類型加上所有裝飾器——才能得到自己希望的單個IO對象。
FilterInputStream和FilterOutputStream(這兩個名字不十分直觀)提供了相應的裝飾器接口,用於控制一個特定的輸入流(InputStream)或者輸出流(OutputStream)。它們分別是從InputStream和OutputStream衍生出來的。此外,它們都屬於抽象類,在理論上為我們與一個流的不同通信手段都提供了一個通用的接口。事實上,FilterInputStream和FilterOutputStream只是簡單地模仿了自己的基礎類,它們是一個裝飾器的基本要求。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved