天天看點

java裝飾者模式應用場景

java裝飾模式和繼承的差別
java裝飾模式和繼承的差別如下:
裝飾模式以對客戶透明的方式動态地給一個對象附加上更多的責任。換言之,用戶端并不會覺得對象在裝飾前和裝飾後有什麼不同。裝飾模式可以在不使用創造更多子類的情況下,将對象的功能加以擴充。
什麼是java裝飾設計模式
在不必改變原類檔案和使用繼承的情況下,動态地擴充一個對象的功能。它是通過建立一個包裝對象,也就是裝飾來包裹真實的對象。
publicclassTest{
//将内容寫到另一個檔案
publicvoidwrite(){
Stringstring="測試包裝模式";
FileWriterfw=newFileWriter("D:/copyfile.txt");
//用到包裝模式,擴充FileWriter的功能
BufferedWriterbW=newBufferedWriter(fw);
bW.write(string);
bW.flush();
}catch(IOExceptione){
e.printStackTrace();
publicstaticvoidmain(String[]args){
Testtest=newTest();
test.write();
執行結果:
本回答由網友推薦
java設計模式之觀察者模式是怎樣的?
* subject 
*目标接口 
public interface Subject { 
public void addObserver(Observer o); 
public void deletObserver(Observer o); 
public void notice(); 
//Observer。
Java設計模式的中介者模式是怎樣的?
  如果對象之間的關系原本一目了然,中介對象的加入便是“畫蛇添足”。 
來看下中介者模式的組成部分吧。 
1) 抽象中介者(Mediator)角色:抽象中介者角色定義統一的接口用于各同僚角色之間的通信。 
2) 具體中介者(Concrete Mediator)角色:具體中介者角色通過協調各同僚角色實作協作行為。
java設計模式--裝飾模式傳參求解
一般裝飾模式是不用set的都是構造函數傳入你要裝飾的對象,最好的例子就是jdk 關于io 操作的Stream 和Writer 這些都是很好的裝飾例子,自己去看看a=new B();然後a.setneww(a);這個set要求放的是A
Java的裝飾模式中裝飾角色已經可以擴充其它的功能,為什麼還要設定一個具體裝飾角色?
是可以合并的,但是不建議這樣做,因為擴充需可能要多個具體裝飾器角色,那麼裝飾器角色 就可以操作多個了,簡單的說如果你1對1的情況,全部合并都沒關系,但是需要應對1對多的情況告訴你個情景吧,java io
抽象建構角色:inputstream ,具體建構角色:FileInputStream,ByteArrayInputStream,
裝飾角色:FilterInputStream,具體裝飾角色:DataInputStream,BufferedInputstream,pushBackInputStream