1. 程式人生 > >淺談裝飾模式、代理模式、繼承

淺談裝飾模式、代理模式、繼承

nts 調用 功能增強 對象的訪問 別人 集成 引用 指針 裝飾模式

裝飾模式:在不改變接口的前提下,動態擴展對象的功能
  • 當想要對已有的對象進行功能增強時,可以定義類,將已有對象傳入,基於已有的功能,並提供加強功能。那麽自定義的該類稱為裝飾類。一般的,裝飾者和背裝飾者實現相同的接口,實現增加功能而不增加接口。
  • 裝飾類通常會通過構造方法接收被裝飾的對象。並基於被裝飾的對象的功能,提供更強的功能。
代理模式:在不改變接口的前提下,控制對象的訪問
裝飾者模式強調功能擴展,比如A對象的B方法,運用裝飾模式後,在調用B方法前後增加了新的功能,此時B方法效果與原來不同(咖啡店的例子,用戶知道得到的是加了牛奶和奶泡的深焙咖啡,這杯深焙咖啡與原有的深焙咖啡不同)
代理模式強調控制訪問,在調用B方法前後加入的方法是用來控制怎麽訪問B方法的原始數據,而對於B實現的功能效果不做修改(咖啡店的例子,用戶只知道得到的是一杯深焙咖啡,裏面有沒有牛奶等調料是不知道的,功能也是賣給用戶一杯咖啡,這個功能是沒有變化的)
  • 代理就是讓別人(實現類)去幹,而具體怎麽幹並不關心,讓誰幹也不關心。

裝飾:包裝,包裝的是對象的引用或指針;裝飾對象和原對象同時對用戶可見。
繼承:類的依賴性較強,集成體系臃腫。簡言之,裝飾擴展的是對象,而繼承擴展的是類。

淺談裝飾模式、代理模式、繼承