设计模式之装饰者模式12
来源:互联网 发布:飞机票在线制作软件 编辑:程序博客网 时间:2024/06/04 19:52
设计模式之装饰者模式12
背景
有一次考试,小明考了60分,然后学校出了一个成绩单,要家长签字。60分,王老汉肯定不签字。这时,需要加两个装饰。
1:最高分是70分,我考了60分。
2:我排名从40到30名。
类图
代码实现
学校给的报告单
public abstract class SchoolReport { public abstract void report(); public abstract void sign(String name);}
四年级真实的成绩单
public class FourGradeReport extends SchoolReport{ @Override public void report() { System.out.println("我考了60分。"); } @Override public void sign(String name) { System.out.println("家长签字:"+name); }}
抽象出来的装饰类
public abstract class Decorator extends SchoolReport{ private SchoolReport sr; public Decorator(SchoolReport sr) { this.sr = sr; } @Override public void report() { this.sr.report(); } @Override public void sign(String name) { this.sr.sign(name); }}
高分的修饰类
public class HighScoreReport extends Decorator{ public HighScoreReport(SchoolReport sr) { super(sr); } public void reportHigh() { System.out.println("最高分是70"); } @Override public void report() { super.report(); this.reportHigh(); }}
排名的修饰类
public class SortScoreReport extends Decorator{ public SortScoreReport(SchoolReport sr) { super(sr); } public void reportSort() { System.out.println("排名从40到30名"); } @Override public void report() { super.report(); this.reportSort(); }}
给王老汉看报告,并要求签字
public class Client { public static void main(String[] args) { SchoolReport sr = new FourGradeReport(); sr = new HighScoreReport(sr); sr = new SortScoreReport(sr); sr.report(); sr.sign("王老汉"); }}
运行结果
我考了60分。最高分是70排名从40到30名家长签字:王老汉
0 0
- 设计模式之装饰者模式12
- 设计模式之装饰者设计模式
- 设计模式 之 装饰者
- 设计模式之装饰者模式
- 设计模式之装饰者模式
- 设计模式之Decorator(装饰者模式)
- 设计模式之五---装饰者模式
- 设计模式之---装饰者模式
- c++设计模式之装饰者模式
- Php设计模式之装饰者模式
- java设计模式之装饰者模式
- 设计模式之装饰者模式
- 【设计模式】之装饰者模式
- HeadFirst设计模式之装饰者模式
- c++设计模式之装饰者模式
- 设计模式之装饰者模式
- 设计模式之--装饰者模式
- 设计模式之装饰者模式
- Jquery基础(第三遍历)
- 二叉树的遍历
- OpenFiler安装与基本配置
- 微信openid的生成规则研究
- 集合内容对应大值和对应小值的互换
- 设计模式之装饰者模式12
- JS 设置物体居中
- LeetCode----29. Divide Two Integers (两数相除)
- JS
- 微信Android热补丁实践演进之路
- RampDiffuse纠错——Error:incorrect number of arguments to numeric-type constructor
- 第一篇博客
- 经典SQL语句大全——(一)基础
- Eclipse配置