设计模式(9)——Decorator(装饰)模式

来源:互联网 发布:农村淘宝快递加盟 编辑:程序博客网 时间:2024/04/28 23:46

什么是装饰模式?

装饰模式是动态地(在运行时)给一个对象添加一些额外的职责。



装饰模式的适用范围

1.在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责;
2. 处理那些可以撤销的职责
3. 当不能采用生成子类的方式进行扩充时。

装饰模式的示例


/** * Window Interface  *  * Component window */public interface Window {public void renderWindow();}

/** * Window implementation  *  * Concrete implementation */public class SimpleWindow implements Window {@Overridepublic void renderWindow() {// implementation of rendering details}}

/** * */public class DecoratedWindow implements Window{/** * private reference to the window being decorated  */private Window privateWindowRefernce = null;public DecoratedWindow( Window windowRefernce) {this.privateWindowRefernce = windowRefernce;}@Overridepublic void renderWindow() {privateWindowRefernce.renderWindow();}}


/** * Concrete Decorator with extended state  *  *  Scrollable window creates a window that is scrollable *  * */public class ScrollableWindow extends DecoratedWindow{/** * Additional State  */private Object scrollBarObjectRepresentation = null;public ScrollableWindow(Window windowRefernce) {super(windowRefernce);}@Overridepublic void renderWindow() {// render scroll bar renderScrollBarObject();// render decorated windowsuper.renderWindow();}private void renderScrollBarObject() {// prepare scroll bar scrollBarObjectRepresentation = new  Object();// render scrollbar }}



0 0
原创粉丝点击