首页 > 代码库 > 装饰者模式
装饰者模式
/** * 抽象构件 */ public abstract class Component { public abstract void operate(); } /** * 具体构件 */ public class CreateComponent extends Component { @Override public void operate() { System.out.println("do somthing..........."); } } /** * 抽象装饰者 */ public abstract class Decorator extends Component { private Component component=null; public Decorator(Component _component) { this.component = _component; } @Override public void operate() { this.component.operate(); } } /** *2014-10-4上午09:26:44 */ public class CreateDecorator extends Decorator { public CreateDecorator(Component _component) { super(_component); } private void method(){ System.out.println("装饰者1。。。。。"); } public void operate() { this.method(); super.operate(); } } public class CreateDecorator2 extends Decorator { public CreateDecorator2(Component _component) { super(_component); } private void method(){ System.out.println("装饰者2。。。。。"); } public void operate() { this.method(); super.operate(); } } /** * * *@date 2014-10-4上午09:32:08 */ public class Client { /** * 1.装饰类和被装饰类可以独立发展,不会相互耦合。 * 2.装饰模式是一种继承关系的替代方案 * 3.装饰模式可以动态的扩展一个实现类的功能。 * 装饰模式缺点: * 多层的装饰是比较复杂的 * 装饰模式的应用场景: * 1.需要扩展一个类的功能,或者给一个类增加附加的功能 * 2.需要动态的给一个对象增加功能,这些功能也可以动态的撤销 * 3.需要为一批兄弟类进行改装或增加功能,首选装饰模式 */ public static void main(String[] args) { Component component = new CreateComponent(); component = new CreateDecorator(component); component = new CreateDecorator2(component); component.operate(); } }
装饰者模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。