對象增強的手段
* 繼承
被增強的對象固定的
增強的內容也是固定的
* 裝飾者模式
被增強的對象是可以切換的
增強的內容是固定的
* 動態代理(AOP)
被增強的對象可以切換:Service
增強的內容也可以切換:事務處理
繼承:
缺點:
1. 增強的內容是死的,不能動!
2. 被增強的對象也是死的!
使用繼承會使類增多!!!
class 咖啡類 {}
class 有糖咖啡 extends 咖啡類 {
}
class 加奶咖啡 extends 咖啡類 {
}
class 加鹽咖啡 extends 咖啡類 {
}
class 加糖加奶 extends 加奶 {
}
裝飾者模式
- 增強的內容是不能修改的!
- 被增強的對象可以是任意的!
class 咖啡類 {}
class 有糖咖啡 extends 咖啡類 {
}
class 加奶咖啡 extends 咖啡類 {
}
class 加鹽咖啡 extends 咖啡類 {
}
咖啡 a = new 加糖();
咖啡 b = new 加鹽(a);//對a進行裝飾,就是給a加鹽
咖啡 c = new 加奶(b);
Java API
IO流!
四大家:
1. 字節:InputStream、OutputStream
2. 字符:Reader、Writer
InputStream
FileInputSteram:它是節點流!就是和一個資源綁定在一起的!文件!
BufferedInputStream:它是裝飾流!創建我是一定要給我一個底層對象,然後我不管你給我的是什麼流,我都會給它添加緩衝區!
new BufferedInputStream(任意的InputStream)
FileInputStream in = new FileInputStream(“F:/a.jpg”);
BufferedInputStream b = new BufferedInputStream(in);
ObjectInputStream o = new ObjectInputStream(b);