JDK裏面的裝飾器模式和代理模式拾荒

代理模式在於對被代理對象進行控制。  比如 

Collections.unmodifiableList    增加,刪除等操作會直接拋出錯誤。
Collections.synchronizedMap   所有的操作進行加鎖,從而變得線程安全。

代理模式中代理者和被代理者有着相同的行爲,一般兩者實現相同的接口。 

 

裝飾器模式在於功能增強。  比如  I/O 集合裏面的

ByteArrayOutputStream和DataOutputStream

ByteArrayOutputStream 提供基礎的字節存儲功能。 

public static void main(String[] args) throws Exception{
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    byteArrayOutputStream.write(100);
    byteArrayOutputStream.write(new byte[]{1,2,3});
}

 

DataOutputStream 則提供更高層次的支持

 

比如writeLong ,但最終還是調用了out的基礎方法。

public final void writeLong(long v) throws IOException {
    writeBuffer[0] = (byte)(v >>> 56);
    writeBuffer[1] = (byte)(v >>> 48);
    writeBuffer[2] = (byte)(v >>> 40);
    writeBuffer[3] = (byte)(v >>> 32);
    writeBuffer[4] = (byte)(v >>> 24);
    writeBuffer[5] = (byte)(v >>> 16);
    writeBuffer[6] = (byte)(v >>>  8);
    writeBuffer[7] = (byte)(v >>>  0);
    out.write(writeBuffer, 0, 8);
    incCount(8);
}

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章