装饰者模式是对已经存在的对象添加功能
在这个例子中为已经存在的手机对象添加上网和玩游戏的功能,而且没有对原有的Phone产生影响
public interface Phone {
void function();
}
class iPhone implements Phone{//实现类
@Override
public void function() {
System.out.println("我可以打电话");
}
public static void main(String[] args) {
iPhone4s p=new iPhone5s(new iPhone5(new iPhone4s(new iPhone())));
p.function();
}
}
class iPhone4s implements Phone{//装饰类
private Phone ip;
iPhone4s(){}
iPhone4s(Phone ip){
this.ip=ip;
}
@Override
public void function() {
ip.function();
}
}
class iPhone5 extends iPhone4s{
iPhone5(){}
iPhone5(Phone ip){
super(ip);
}
@Override
public void function() {
super.function();
System.out.println("我可以上网");
}
}
class iPhone5s extends iPhone4s{
iPhone5s(){}
iPhone5s(Phone ip){
super(ip);
}
@Override
public void function() {
super.function();
System.out.println("我可以玩游戏");
}
}