動態的將責任附加到物件上。若要擴充套件功能,裝飾者提供了比繼承更有彈性的取代方案
/** * 元件:裝飾類和被裝飾類 都要繼承:為了型別保持一致
*@author always
* */
public
abstract
class
component
package gx.component.impl;
import gx.component.component;
/** * 裝飾類的抽象類
*@author always
* */
public
abstract
class
decorator
extends
component
package gx.component.impl;
import gx.component.component;
/** *
* 被包裝的類
*@author always
* */
public
class
phone
extends
component
public
intcost()
}
package gx.decorator.impl;
import gx.component.component;
import gx.component.impl.decorator;
/** *
* 裝飾1:給手機買個殼
*@author always
* */
public
class
daike
extends
decorator
public
daike(component component)
public
void
description()
public
intcost()
}
package gx.decorator.impl;
import gx.component.component;
import gx.component.impl.decorator;
/** *
* 裝飾2:給手機貼個膜
*@author always
* */
public
class
tiemo
extends
decorator
public
tiemo(component component)
public
void
description()
public
intcost()
}
測試類:
package gx;
import gx.component.component;
import gx.component.impl.phone;
import gx.decorator.impl.daike;
import gx.decorator.impl.tiemo;
import junit.framework.testcase;
public
class
testdecorator
extends
testcase
}
理解python函式裝飾器 decorator
函式裝飾器是python有別於其他語言的主要特徵之一,這也是充分發揮了動態語言的優勢,可以使我們在編寫程式時更加簡潔。但最開始接觸函式裝飾器有點難以理解,本文盡量用簡單的語言來理解函式裝飾器。在理解函式裝飾器之前,最好儲備並理解了以下python的基礎知識 生活中,化妝可能是最容易理解裝飾行為的例子...
Java 裝飾模式
動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活。盜圖 component是定義了乙個物件介面,可以誒這些uixiang動態新增職責。concretecomponent是定義了乙個具體物件,也可以給這個物件新增一些職責,decorator,裝飾抽象類,繼承了compon...
java 裝飾模式
裝飾模式 動態地給乙個物件新增一些額外的職責。就增加功能來說,decorator模式相比生成子類更為靈活 適用性 1.在不影響其他物件的情況下,以動態 透明的方式給單個物件新增職責。2.處理那些可以撤消 再不用使用的類或方法 的職責。3.當不能採用生成子類的方法進行擴充時。參與者 1.compone...