前面利用装饰模式,已经将点烟器成功的改装成了一个usb充电器。无奈烧包的程序员又购置了一台iphone5,坑爹的lightning接口和安卓阵营不兼容。这可苦了程序员了,还好,可以利用装饰模式,扩展一下usb的充电线,增加一个lightning接口,终于搞定啦。
//充电线为安卓接口手机充电
interface ChongDian{
public void Chongdian();
}
class UsbChongDian implements ChongDian{
public void Chongdian() {
// TODO Auto-generated method stub
System.out.println("给安卓接口充电!");
}
}
//在原有充电线上加装一个iphone5接口
class MultiChongDian implements ChongDian{
private ChongDian cd;
MultiChongDian(ChongDian cd){
this.cd = cd;
}
public void Chongdian() {
// TODO Auto-generated method stub
System.out.println("加装一个多功能充头!");
cd.Chongdian();
System.out.println("iphone也能充电啦");
}
}
//执行主函数,iphone5也充的饱饱儿的啦!
public class DeCoratorPattern {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ChongDian usbChongDian = new UsbChongDian();
ChongDian multiChongDian = new MultiChongDian(usbChongDian);
multiChongDian.Chongdian();
}
}
这里我要说明一下,这次介绍的装饰模式和前面提到的适配器模式结构上非常相似,但是在功能上却是有差异的。装饰模式是为了复用之前的老方法,而对老方法进行转换成为新的类。而装饰模式是对现有接口功能得一种动态拓展。
可能我的理解也有偏差,希望好人网友帮忙指正,谢谢!