decorate装饰模式

decorate装饰模式

package com.decorate;

public class Iphone implements Phone{

    @Override
public void call() {
System.out.println("手机可以打电话");
} }
package com.decorate; public interface Phone{
public void call();//打电话
}
package com.decorate; public abstract class PhoneDecorate implements Phone{
private Phone p; public PhoneDecorate(Phone p){
this.p=p;
}
@Override
public void call() {
this.p.call();
}
}
package com.decorate; public class MusicPhoneDecorate extends PhoneDecorate { public MusicPhoneDecorate(Phone p) {
super(p);
}
@Override
public void call() {
super.call();
System.out.println("手机可以听音乐");
} }
package com.decorate; public class RingPhoneDecorate extends PhoneDecorate { public RingPhoneDecorate(Phone p) {
super(p);
} @Override
public void call() {
System.out.println("手机可以听彩铃");
super.call();
} }
package com.decorate; public class PhoneDemo {
public static void main(String[] args) {
Iphone iphone=new Iphone();
iphone.call();
System.out.println("---");
//接电话前听彩铃
PhoneDecorate pd=new RingPhoneDecorate(iphone);
pd.call();
System.out.println();
//接电话后听音乐
pd=new MusicPhoneDecorate(iphone);
pd.call();
System.out.println("-----");
//手机在接听前听彩铃,接听后听音乐
pd=new MusicPhoneDecorate(new RingPhoneDecorate(iphone));
pd.call();
}
}
上一篇:3 数据库


下一篇:小程序canvas生成二维码图片踩的坑