装饰模式

定义

动态地给一个对象添加一些额外的职责。

优点缺点及使用场景

优点

  1. 装饰类和被装饰类独立发展,不相互耦合。
  2. 动态扩展一个实现类的功能。

缺点

  1. 越多层装饰越复杂。

使用场景
需要动态扩展一个类的功能。

示例代码

/*
 * 抽象业务类
 */
public abstract class SchoolReport
{
    public abstract void report();
    public abstract void sign();
}

public abstract class Decorator extends SchoolReport
{
	private SchoolReport report;
    public Decorator(SchoolReport report)
	{
	    this.	report = report;
	}

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

	@Override
	public void sign()
	{
		this.report.sign();
	}
     
	public static void main(String[] args){
		SchoolReport sReport = new FouthGradeSchoolReport();
		sReport = new HighScoreDecorator(sReport);
		sReport = new SortDecorator(sReport);
		sReport.report();
	}
}

/*
 * 装饰类
 */
public class HighScoreDecorator extends Decorator
{

	public HighScoreDecorator(SchoolReport report)
	{
		super(report);
	}
   
	public void highSoreReport(){
		System.out.println("修饰的报告 high...");
	}
	public void report(){
		this.highSoreReport();
		super.report();
	}
}

在这里插入图片描述
抽象装饰类中代理了业务接口,原始类进行装饰时,装饰类就相当于代理了该原始类,这样在原功能的基础上再动态调用装饰类自己的功能以达到动态增加功能的目的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值