本篇文章主要介绍了"装饰者模式Decorator Pattern",主要涉及到对象,装饰者模式方面的内容,对于Javajrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
装饰者模式MM们要过生日了 ,怎么也得表示下吧。最起码先送个蛋糕。蛋糕多种多样了。巧克力,冰淇淋,奶油等等。这都是基本的了 ,再加点额外的装饰,如蛋糕里放点花。...
再看看装饰器的抽象类
OtherDecoratorpackage decorator.demo;
/**
* 其他用来添加蛋糕的东西
* @author Nicholas
*
*/
public abstract class OtherDecorator extends Cake{
Cake cake;
/**
* 引用一个Cake.
* 让被装饰者进入装饰者之中。这里用的是构造方法注入。
* 这样就可以调用Cake实例的方法了。
* @param cake
*/
public OtherDecorator(Cake cake){
this.cake=cake;
}
/**
* 让装饰器的子类都去实现getRemark方法。业务需要每个装饰器都要有描述。
*/
public abstract String getRemark();
}
下面让我们实现一个蛋糕吧。^_^。。
package decorator.demo;
/**
* 乳酪蛋糕
* @author Nicholas
*
*/
public class CheeseCake extends Cake{
/**
* 乳酪蛋糕的构造方法
*/
public CheeseCake(){
super.remark="乳酪蛋糕";//修改乳酪蛋糕的描述。
}
/**
* 实现了Cake抽象类的getImpression
* 吃乳酪蛋糕的感觉。。
*/
public String getImpression() {
return "香甜感受";
}
}
其他实现Cake的类就不列出了,道理是一样的。
下面我们要开始实现具体的装饰器了。
package decorator.demo;
/**
* 给蛋糕添加的花
* @author Nicholas
*
*/
public class FlowerDecorator extends OtherDecorator{
/**
* 构造函数
* 传入一个cake实例,也就是前面所实现的Cake的子类,如奶酪蛋糕,巧克力蛋糕等等。
* @param cake
*/
public FlowerDecorator(Cake cake){
super(cake);//调用父类的构造方法,可以获取Cake的实例了。就可以调用Cake实例的方法.
super.remark="一朵玫瑰花";
}
/**
* 实现了装饰器抽象类的getImpression方法。
*/
public String getImpression() {
//这是重点。我们通过构造方法传入的cake实例。对cake进行了装饰,增加了新的功能。
return cake.getImpression()+","+"看到一朵花真是happy";
}
public String getRemark() {
return cake.getRemark()+"+"+super.remark;
}
}
到现在终于大功告成了。。这样方便了很多,可以通过装饰器生成很多种类的蛋糕。