不要去记,啥接口啥类,搞明白就记住了。也不局限你这模式。我觉得阔以实现这思想的方式都可以。不一定就记住这模式。
装饰?啥?一个类代表一个个体,个性化个体,个体里面总有代表性操作。装饰无非就是装饰他想表达的操作。装饰要是垂直装饰,很简单直接继承,想叠加就继承。那没多大意义。累。横向装饰,并且是多次的。想啥时候就给他装饰下。
我初步想到的,就是把你这个要装饰的东东给当做成员变量传到真正做装饰的主类。那调用主类,你想怎么横向设计都行。这就是套路了。当做成员属性传入,想咋玩就咋玩。想咋装饰就咋装饰。那多层嵌套呢?还是老规矩,接口解决。那这样装饰模式就出来了。成员属性,加接口(代表的一类模型)。即是装饰模式。
下面代码,implements 可以改成类YY。都可以。经典的是jdk。io流。bufferedinputstream和fileinputstream。
interface XX{
public void doSomething();
}
class YY implements XX{
@Override
public void doSomething() {
System.out.println("YY do something.");
}
}
class ZZ implements XX{
public XX xx;
public ZZ(XX xx){
this.xx = xx;
}
public void doSomething(){
xx.doSomething();
System.out.println("ZZ do something.");
}
}
class KK implements XX{
public XX xx;
public KK(XX xx){
this.xx = xx;
}
public void doSomething(){
xx.doSomething();
System.out.println("KK do something.");
}
}