動態的給乙個物件新增一些額外的職責
繼承方案會導致繼承結構複雜,不易維護等問題,因此使用組合代替繼承,給原始類新增增強功能
裝飾器類需要和原始類繼承相同的抽象類或者實現相同的介面
下面以jdk中的io舉例:
//抽象類輸入流
public
abstract
class
inputstream
}
//實現inputstream中的所有方法,讓其子類按需要覆蓋方法,並且還可以提供附加的方法或字段。
public
class
filterinputstream
extends
inputstream
public
intread()
throws ioexception
public
void
close()
throws ioexception
}
//裝飾器類都繼承filterinputstream,可以增強自己想要增強的功能
public
class
checkedinputstream
extends
filterinputstream
public
intread()
throws ioexception
return b;
}}
徹底搞懂單例模式
在程序中,乙個類只允許建立乙個物件 解決資源衝突 資料只需要存在乙份 1.餓漢式 public class singleton public static singleton getinstance 優點 執行緒安全,獲取例項的速度快 缺點 類載入時例項化物件,可能不被使用,造成記憶體的浪費。2.懶...
徹底搞懂px em rem
px畫素 pixel 相對長度單位。畫素px是相對於顯示器螢幕解析度而言的。px特點 em是相對長度單位。相對於當前物件內文字的字型尺寸。如當前對行內文字的字型尺寸未被人為設定,則相對於瀏覽器的預設字型尺寸。em特點 注意 任意瀏覽器的預設字型高都是16px。所有未經調整的瀏覽器都符合 1em 16...
徹底搞懂parseInt
parseint 72.45 8 2 8 1 7 8 1 4 8 1 5 8 2 2 1 7 8 4 1 8 5 1 8 8 58.578125 parseint 231 3 3進製只能是0 2,所以查詢到3的時候,發現已經不是3進製的範疇了,則不再繼續查詢 把2當做3進製,最後轉為10進製 2 3...