好记性不如铅笔头

java, 编程, 设计模式

设计模式学习笔记:装饰模式

最近在看《设计模式之禅》这本书,收获良多,作者不愧是工作多年的大牛,将各种设计模式讲解的非常透彻。这里备份下书中的【 装饰模式 】代码:

github:

https://github.com/cstriker1407/design_pattern 】

代码:

abstract class SchoolReport
{
	public abstract void report();
	public abstract void sign();
}

class FinalTestReport extends SchoolReport
{
	@Override
	public void report()
	{
		System.out.println("final test report");
	}

	@Override
	public void sign()
	{
		System.out.println("sign here");
	}
} 
abstract class DecoratorSchoolReport extends SchoolReport
{
	private SchoolReport report;

	public DecoratorSchoolReport(SchoolReport report)
	{
		super();
		this.report = report;
	}

	@Override
	public void report()
	{
		report.report();
	}

	@Override
	public void sign()
	{
		report.sign();
	}
}
class HighScoreDecorator extends DecoratorSchoolReport
{
	public HighScoreDecorator(SchoolReport report)
	{
		super(report);
	}
	@Override
	public void report()
	{
		System.out.println("show high score before show Final Test result");
		super.report();
	}
}

class SortDecorator extends DecoratorSchoolReport
{
	public SortDecorator(SchoolReport report)
	{
		super(report);
	}
	@Override
	public void report()
	{
		super.report();
		System.out.println("show sort number after show Final Test result");
	}
}

 测试代码:

public class DecoratorTest
{
	public static void test()
	{
		SchoolReport sr = new FinalTestReport();

		sr = new HighScoreDecorator(sr);
		sr = new SortDecorator(sr);
		
		sr.report();
	}
}

发表评论

2 × 2 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据