接口
package org.westos.装饰者模式;
public interface Phone {
//手机抽象功能
public abstract void call();
}
实现接口的具体类
package org.westos.装饰者模式;
public class Iphone implements Phone{
@Override
public void call() {
System.out.println("手机可以打电话");
}
}
实现接口的抽象类,关键
package org.westos.装饰者模式;
//抽象类,手机的装饰类
public abstract class PhoneDecoreate implements Phone {
private Phone p;
public PhoneDecoreate(Phone p) {
this.p = p;
}
@Override
public void call() {
this.p.call();
}
}
继承抽象类的具体类
package org.westos.装饰者模式;
public class Iphone2 extends PhoneDecoreate {
public Iphone2(Phone P) {
super(P);
}
//实现听音乐功能
@Override
public void call() {
super.call();
System.out.println("手机听音乐");
}
}
package org.westos.装饰者模式;
public class Iphone3 extends PhoneDecoreate{
public Iphone3(Phone p) {
super(p);
// TODO Auto-generated constructor stub
}
@Override
public void call() {
System.out.println("彩铃响了");
super.call();
}
}
测试类
package org.westos.装饰者模式;
public class Demo {
public static void main(String[] args) {
Phone p = new Iphone();
Iphone2 p2 = new Iphone2(p);
p2.call();
System.out.println("------------------");
Iphone3 p3 = new Iphone3(p);
p3.call();
System.out.println("------------------");
//新需求,先彩铃,打电话,听音乐
//封装
Iphone2 p4 = new Iphone2(new Iphone3(p));
p4.call();
System.out.println("----------------------");
Iphone3 p5 = new Iphone3(new Iphone2(p));
p5.call();
}
}