首页 > 代码库 > 【设计模式】—— 装饰模式Decorator
【设计模式】—— 装饰模式Decorator
前言:【模式总览】——————————by xingoo
模式意图
在不改变原来类的情况下,进行扩展。
动态的给对象增加一个业务功能,就功能来说,比生成子类更方便。
应用场景
1 在不生成子类的情况下,为对象动态的添加某些操作。
2 处理一些可以撤销的职责。
3 当不能使用生成子类来扩充时。
模式结构
Component 外部接口,用于定义外部调用的形式。提供默认的处理方法。
interface Component{ public void operation(); }
ConcreteComponent 具体的处理类,用于实现operation方法。
class ConcreteComponent implements Component{ @Override public void operation() { // TODO Auto-generated method stub System.out.println("ConcreteComponent operation()"); } }
Decorator 装饰类,内部关联一个component对象,调用其operation方法,并添加自己的业务操作。
class Decorator implements Component{ private Component component; @Override public void operation() { // TODO Auto-generated method stub System.out.println("before decorator!"); component.operation(); System.out.println("after decorator!"); } public Decorator() { // TODO Auto-generated constructor stub } public Decorator(Component component){ this.component = component; } }
全部代码
1 package com.xingoo.decorator; 2 interface Component{ 3 public void operation(); 4 } 5 class ConcreteComponent implements Component{ 6 7 @Override 8 public void operation() { 9 // TODO Auto-generated method stub10 System.out.println("ConcreteComponent operation()");11 }12 13 }14 class Decorator implements Component{15 private Component component;16 @Override17 public void operation() {18 // TODO Auto-generated method stub19 System.out.println("before decorator!");20 component.operation();21 System.out.println("after decorator!");22 }23 public Decorator() {24 // TODO Auto-generated constructor stub25 }26 public Decorator(Component component){27 this.component = component;28 }29 30 }31 32 33 public class test {34 public static void main(String[] args) {35 Component component = new Decorator(new ConcreteComponent());36 component.operation();37 }38 }
运行结果
before decorator!ConcreteComponent operation()after decorator!
【设计模式】—— 装饰模式Decorator
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。