裝飾者模式,適配器模式,代理模式區別


裝飾者模式的關注點在於添加功能

代理模式的關注點在於控制對象的訪問,其原型對象對於用戶無法得知

適配器模式關注點在於適配,從定義上看裝飾模式是對核心對象或者功能的擴展,適配器模式是把對象或者功能放到一個新對象中引用。舉個例子,現在書城賣道德經的書,有線裝版,有精裝版,有日文版,有英文版,其中線裝版和精裝版就是裝飾模式,日文版和英文版就是適配器模式,各種版本都是為迎合不同消費者的不同需求。為什么呢?因為線裝版和精裝版的道德經雖然包裝不同,但內容相同,日文版和英文版就不同,這兩個版本的內容就可能和原版的不同,文化差異嘛,翻譯的內容雖來自道德經,但根據不同國家的文化,思維邏輯什么的就可能改變一些想法

裝飾模式一般在下列情況使用:需要擴展一個類的功能或者給你個類增加附加責任;需要動態的給一個對象增加功能,這些功能可以再動態的撤銷;需要增加有一些基本功能的排列組合而產生非常大量的功能,從而使得繼承關系變得不現實。

適配器模式一般使用的情況包括:系統需要使用現有的類,但此類已經不符合系統的需要;

想要建立一個可以重復使用的類,用於與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的的類一起工作。適配器模式在系統升級的時候使用的頻率很高,對舊系統的一些功能方法在新系統中引用。

裝飾模式java中的I/O文件的操作中都有體現。

Java的IO庫中處理流的類有FIleInputStream,FileOutputStream,DataInputStream,DataOutputStream類等。在InputStream,OutputStream,Reader,Writer結構的內部,有一些流處理器可以對另一些流處理器起到裝飾作用,形成新的,改善的流處理器。這就體現了裝飾模式的作用。同時在一些流處理器的內部有對其他流處理器的功能的適配引用,這體現了適配器模式的優點。

模式概念的出現,完善到合理應用是前輩們在實際的應用中不斷總結的結晶。對於不同的需求合理的使用模式能起到事半功倍的效果,但是模式不是放之四海而皆准的,況且模式也不是一成不變死板的,隨着技術的發展,工程師的智慧總結,可能會有新的模式出現和舊的模式的消亡,模式就是為實際需要而生,沒必要上升到哲學這種高度。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM