装饰四大部分
1、抽象组件:需要装饰的抽象对象(接口或抽象父类)
2、具体组件:需要装饰的对象
3、抽象装饰类:包含了对抽象组件的引用以及装饰着共有的方法
4、具体装饰类:被装饰的对象
代码示例
code
/**
* 测试装饰, 模拟将人的声音放大
* 装饰四大部分
* 1、抽象组件:需要装饰的抽象对象(接口或抽象父类) (Say)
* 2、具体组件:需要装饰的对象 (Person)
* 3、抽象装饰类:包含了对抽象组件的引用以及装饰着共有的方法
* 4、具体装饰类:被装饰的对象 (Person)
* @author dxt
*
*/
public class DecorateTest01 {
public static void main(String[] args){
Say p = new Person();
p.say();
Say p2 = new Louder(p);
p2.say();
}
}
//抽象组件:
interface Say{
void say();
}
//具体接口
class Person implements Say{
private int voice = 10;
public int getVoice(){
return this.voice;
}
public void say(){
System.out.println("I'm saying..." + this.getVoice());
}
}
//抽象装饰类
abstract class Decorate implements Say{
//对抽象组件的引用
protected Say s;
public Decorate(Say say){
this.s = say;
}
public void say(){
System.out.print("I'm saying...");
this.s.say();
}
}
//具体装饰类
class Louder extends Decorate{
public Louder(Say s){
super(s);
}
public void say(){
System.out.print("I'm louding...");
super.s.say();
}
}
result
来源:CSDN
作者:dxt_snow
链接:https://blog.csdn.net/qq_37665301/article/details/104636271