设计形式-装饰者模式(decorator pattern)
设计模式----装饰者模式(decorator pattern)
SchoolReport.java代码如下:
FouthGradeSchoolReport.java代码如下:
Decorator.java代码如下:
HighScoreDecorator.java代码如下:
SortDecorator.java代码如下:
Father.java代码如下:
运行结果如下:
SchoolReport.java代码如下:
package com.designPattern.decorator; public abstract class SchoolReport { public abstract void report(); public abstract void sign(String name); }
FouthGradeSchoolReport.java代码如下:
package com.designPattern.decorator; public class FouthGradeSchoolReport extends SchoolReport{ @Override public void report() { System.out.println("========以下是成绩单原装内容!============"); System.out.println("+++++++++++++++++++++++++++++++++++"); System.out.println("+++++++++++++++++++++++++++++++++++"); System.out.println("+++++++++++++++++++++++++++++++++++"); System.out.println("+++++++++++++++++++++++++++++++++++"); System.out.println("+++++++++++++++++++++++++++++++++++"); System.out.println("========以上是成绩单原装内容!============"); } @Override public void sign(String name) { System.out.println("家长签名为:" +name); } }
Decorator.java代码如下:
package com.designPattern.decorator; public abstract class Decorator extends SchoolReport{ private SchoolReport schoolReport; public Decorator(SchoolReport schoolReport){ this.schoolReport =schoolReport; } public void report(){ this.schoolReport.report(); } public void sign(String name){ this.schoolReport.sign(name); } }
HighScoreDecorator.java代码如下:
package com.designPattern.decorator; public class HighScoreDecorator extends Decorator{ public HighScoreDecorator(SchoolReport schoolReport) { super(schoolReport); } public void reportHighScore(){ System.out.println("这次语文成绩最高是75,数学是78,自然是80"); } public void report(){ this.reportHighScore(); super.report(); } }
SortDecorator.java代码如下:
package com.designPattern.decorator; public class SortDecorator extends Decorator{ public SortDecorator(SchoolReport schoolReport) { super(schoolReport); } private void reportSort(){ System.out.println("我排名第38名"); } @Override public void report() { super.report(); this.reportSort(); } }
Father.java代码如下:
package com.designPattern.decorator; public class Father { public static void main(String[] args) { SchoolReport schoolReport; schoolReport = new FouthGradeSchoolReport(); schoolReport = new HighScoreDecorator(schoolReport); schoolReport = new SortDecorator(schoolReport); schoolReport.report(); schoolReport.sign("one'father"); } }
运行结果如下:
这次语文成绩最高是75,数学是78,自然是80 ========以下是成绩单原装内容!============ +++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++ ========以上是成绩单原装内容!============ 我排名第38名 家长签名为:one'father