Java设计模式之装饰器模式
来源:互联网 发布:win10虚拟机装mac 编辑:程序博客网 时间:2024/06/13 15:56
装饰器模式结构:
Component:抽象构件
ConcreteComponent:具体构件
Decorator:抽象装饰类
ConcreteDecorator:具体装饰类
UML图:
例子代码:
抽象构件
public interface Component { void operation1(); void operation2();}
具体构件
public class ConcreteComponent implements Component { @Override public void operation1() { System.out.println("被装饰者自带方法一"); } @Override public void operation2() { System.out.println("被装饰者自带方法二"); }}
抽象装饰类
public abstract class Decorator implements Component{ private Component component; public Decorator(Component component) { this.component = component; } public void operation1(){ component.operation1(); } @Override public void operation2() { component.operation2(); }}
public class ConcreteDecoratorA extends Decorator { public ConcreteDecoratorA(Component component) { super(component); } public void addBehavior1(){ System.out.println("装饰器A装饰方法一"); } public void addBehavior2(){ System.out.println("装饰器A装饰方法二"); } @Override public void operation1() { super.operation1(); addBehavior1(); } @Override public void operation2() { super.operation2(); addBehavior2(); }}
public class ConcreteDecoratorB extends Decorator { public ConcreteDecoratorB(Component component) { super(component); } public void addBehavior1(){ System.out.println("装饰器B装饰方法一"); } public void addBehavior2(){ System.out.println("装饰器B装饰方法二"); } @Override public void operation1() { super.operation1(); addBehavior1(); } @Override public void operation2() { super.operation2(); addBehavior2(); }}客户端public class Client { public static void main(String[] args) { Component component = new ConcreteComponent(); Decorator decorator = new ConcreteDecoratorA(new ConcreteDecoratorB(component)); decorator.operation1(); decorator.operation2(); }}
结果打印:
0 0
- Java设计模式之装饰器模式
- java设计模式之装饰器模式
- Java设计模式之装饰器模式
- Java设计模式之装饰器模式
- java设计模式之装饰器模式
- java模式设计之装饰器模式
- java设计模式之装饰器模式
- java设计模式之装饰器模式
- Java设计模式之装饰器模式
- Java设计模式之装饰器模式
- java设计模式之装饰模式(装饰器模式/装饰者模式)
- Java设计模式之装饰设计模式
- Java之装饰设计模式
- java设计模式之装饰
- Java设计模式之装饰模式
- Java设计模式之装饰模式
- java设计模式之装饰模式
- Java设计模式之二装饰模式
- 计算机网络——8.IPv6基础
- hdu3047 Zjnu Stadium(简单的路径压缩)
- python select.epoll
- Android UrlEncodedFormEntity() 和 StringEntity() 的区别
- Redis开源代码读书笔记一(介绍)
- Java设计模式之装饰器模式
- 二叉树的存储和构造例子
- oracle 分区表的建立
- eludehcSesruoC.207
- 简单的DIV+CSS布局
- 网站开发进阶(三十二)HTML5之FileReader的使用
- python 基本Kmeans算法实现
- java 反射
- 大型网站架构系列:消息队列