设计模式之装饰模式
来源:互联网 发布:写微信推文的软件 编辑:程序博客网 时间:2024/06/06 07:37
1.装饰模式
装饰模式是为了给已有的功能动态的添加额外的功能的一种方式。装饰模式比继承更加灵活。
2.装饰模式实例
装饰模式设计的 UML图如下:
抽象类Component.java如下:
package com.uestc.decorator;public abstract class Component {public abstract void operator();}
package com.uestc.decorator;public class ConcreteComponent extends Component {@Overridepublic void operator() {System.out.println("小馬装扮完毕!");}}
修饰抽象类如下
package com.uestc.decorator;public abstract class Decerator extends Component{Component component;public Decerator(Component component){this.component=component;}public abstract void operator() ;}
修饰具体类ConcreteDecretorA.java 、ConcreteDecretorB.java如下:
package com.uestc.decorator;import java.io.FileInputStream;public class ConcreteDecretorA extends Component {private Component component;public ConcreteDecretorA(Component component) {this.component=component;}public void operator(){System.out.println("小馬穿上白大褂!");if(component!=null){component.operator();}}}
package com.uestc.decorator;public class ConcreteDecoratorB extends Decerator{public ConcreteDecoratorB(Component component){super(component);}public void operator(){System.out.println("小馬穿上TShirt!");if(component!=null)component.operator();}}
主类main.java如下:
package com.main;import com.uestc.decorator.ConcreteComponent;import com.uestc.decorator.ConcreteDecoratorB;import com.uestc.decorator.ConcreteDecretorA;public class Test {/** * @param args */public static void main(String[] args) {System.out.println("小馬装扮开始!");ConcreteComponent component=new ConcreteComponent();ConcreteDecretorA a=new ConcreteDecretorA(component);//给小馬穿上白大褂ConcreteDecoratorB b=new ConcreteDecoratorB(a);//给小馬穿上TShirtb.operator();}}
运行结果如下:
小馬装扮开始!
小馬穿上TShirt
小馬穿上白大褂
小馬装扮完毕!
3.Java IO
在java io的设计模式就是采用装饰模式,其类图如下:
平时我们在做IO操作时很少单独使用那个类,而是将几个IO类组合起来使用,这就体现了装饰模式的设计思想。
- 设计模式之装饰
- 设计模式之装饰
- 设计模式之装饰
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之 装饰模式
- 设计模式之-装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- HDU 4292 网络流 Food
- IntelliJ IDEA 导入so,jar 文件
- 我和对手同时发射了陀螺
- 我也明白要在各门功课上取得好成绩
- 黑马程序员:MSSQLServer和ADO.net
- 设计模式之装饰模式
- 让我在引人入胜的故事情节中学习了科普知识
- OpenGL---GLUT教程(二) GLUT初始化
- 我在一间黑暗的逛街房子里坐着
- CodeForces #209(Div.2) - AB
- 你每次都说看别人短信是不对的
- 《UNIX环境高级编程》笔记--fork系列函数
- 基于Hadoop的云盘系统客户端技术难点
- Ural 1470. UFOs