設計模式 一一一 裝飾模式

適配器模式:
    目的:適配器暴露符合外界規範的接口,該接口的具體實現經過調用被適配對象的相應方法來完成。
    
    應用:系統須要使用現有的一個類,可是這個類的接口不符合系統的須要,此時就須要新增一個適配器來解決這個問題。this

    角色:
        目標接口:符合外界規範的接口
            
        源對象(被適配的對象):提供相應的功能,可是接口的規範不符合外界的要求
            
        適配器:暴露符合外界規範的接口,經過調用被適配對象的相應方法,而後對其結果進行必定加工來實現。
            
            
jdk中的適配器模式:
    /**
     * 目標接口:Reader。 
     *         說明:Reader的目標是讀取數據,可是隻能按照字符來讀取。
     * 源對象(被適配的對象):InputStream的子類
     *         說明:InputStream能夠讀數據,可是隻能按字節來讀取
     * 適配器:InputStreamReader
     *         說明:InputStreamReader經過InputStream來讀取數據,而且將讀取到的字節流轉換爲字符流,而後提供給Reader進行讀取。
     */        
    public class InputStreamReader extends Reader {code

        // StreamDecoder裏面封裝了InputStream對象,即InputStreamReader間接地封裝了InputStream對象。
        private final StreamDecoder sd;對象

        /**
         * 將源對象(被適配的對象)傳入進來,這裏源對象能夠是InputStream的任何一個子類。
         */
        public InputStreamReader(InputStream in) {
            super(in);
            try {
                sd = StreamDecoder.forInputStreamReader(in, this, (String)null); // 將in封裝到sd中。
            } catch (UnsupportedEncodingException e) {
                // The default encoding should always be available
                throw new Error(e);
            }
        }
        
        // 按照字符來讀取數據
        public int read() throws IOException {
            return sd.read(); // 使用in來讀取數據,而後將讀取到的字節流轉換爲字符流後,再去讀取。
        }
    }接口

相關文章
相關標籤/搜索