设计模式之装饰模式
来源:互联网 发布:u盘检测工具 知乎 编辑:程序博客网 时间:2024/06/07 05:29
描述:记得小学每次看完试,老师就会要求我们拿着成绩单找家长签名,成绩考的好的学生虚荣心得到无限满足,不过成绩差的学生就倒霉了,每次家长看到成绩单就会被教育或者是挨骂,都已经习以为常了。有什么办法能使成绩差的学生能够摆脱这种现状呢,答案当然是肯定,用设计模式中的装饰模式就能实现这个愿望。装饰模式可以这样理解,学生找家长签字,家长看的无非就那几个数字,只要在数字前面或者后面添加一些内容(这里称为装饰者),比如班里最高成绩,最差成绩之类的。添加后的成绩单拿给家长看那效果肯定是不一样的,或许还能得到家长的鼓励。
UML类图如下:
图中的Component代表原有成绩单,Decorator代表需要添加的内容。
测试代码:
1、成绩单接口类
package com.java.decorator;public abstract class Component {public abstract void operate();}
2、成绩单接口实现类
package com.java.decorator;import java.util.ArrayList;import java.util.List;public class ConcreteComponent extends Component {private List<String> list = new ArrayList<String>();public void addDecorator(String str){if(list == null){list = new ArrayList<String>();}list.add(str);}public List<String> getList() {return list;}public void setList(List<String> list) {this.list = list;}@Overridepublic void operate() {if(list != null && list.size() > 0){for(String str : list){System.out.println(str);}}System.out.println("这次期末开始,小明数学成绩75,语文60");}}
3、装饰接口类
package com.java.decorator;public interface Decorator {public String operate();}
4、装饰接口实现类
package com.java.decorator;public class ConcreteDecorator1 implements Decorator {private ConcreteComponent conponent;public ConcreteDecorator1(ConcreteComponent conponent) {this.conponent = conponent;conponent.getList().add(operate());}@Overridepublic String operate() {return "这次期末考试数学最高分85,语文最高分80";}}
package com.java.decorator;public class ConcreteDecorator2 implements Decorator {private ConcreteComponent component;public ConcreteDecorator2(ConcreteComponent component) {this.component = component;component.getList().add(operate());}@Overridepublic String operate() {return "这次考试成绩数学排名第30名,语文第38名";}}
5、测试类
package com.java.decorator;public class DecoratorTest {public static void main(String[] args) {ConcreteComponent component = new ConcreteComponent();ConcreteDecorator1 decorator1 = new ConcreteDecorator1(component);ConcreteDecorator2 decorator2 = new ConcreteDecorator2(component);component.operate();}}
6、测试结果
这次期末考试数学最高分85,语文最高分80这次考试成绩数学排名第30名,语文第38名这次期末开始,小明数学成绩75,语文60
0 0
- 设计模式之装饰
- 设计模式之装饰
- 设计模式之装饰
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之 装饰模式
- 设计模式之-装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 关于SpringAOP的初步认识(个人理解)
- Java设计模式之中介者模式
- 火柴棒等式
- 双向链表的基本操作
- C++中的4中类型转换方式
- 设计模式之装饰模式
- 排序算法总结--C++代码实现
- 遍历一个ul设置各个li不同的样式
- test3
- 重写
- centos7最小安装
- 程序的机器级表示·三
- Sphinx参考手册(三)
- lesson6.3从键盘输入字符串