装饰模式

装饰模式

装饰模式:IO设计的核心思想,在不影响原有对象的前提下,无侵入的给一个对象增加一些额外的功能。

代码:

先写一个接口

public interface Phone {
    public void call();
}

再写一个接口实现类:

public class ConcretePhone implements Phone{
    @Override
    public void call() {
        System.out.println("打电话");
    }
}

抽象方法:

public abstract class SmartPhone implements Phone{
    private Phone phone;
    public SmartPhone(Phone phone){
        this.phone = phone;
        phone.call();
    }
    @Override
    public void call() {

    }
}

SmartPhone的子类一:

public class ConcreteSmartPhone1 extends SmartPhone {
    private Phone phone;
    public ConcreteSmartPhone1(Phone phone) {
        super(phone);

    }
    public void call(){
        super.call();
        changgecolor();
    }
    public void changgecolor(){
        System.out.println("改变颜色");
    }
}

SmartPhone的子类二:

public class ConcreteSmartPhone2 extends SmartPhone{
    public ConcreteSmartPhone2(Phone phone) {
        super(phone);
    }
    public void call(){
        super.call();
        changgesize();
    }
    public void changgesize(){
        System.out.println("改变大小");
    }
}

测试类:

public class Test {
    public static void main(String[] args) {
        ConcretePhone p = new ConcretePhone();
        ConcreteSmartPhone1 s1 = new ConcreteSmartPhone1(p);
        s1.call();
        System.out.println("------");
        SmartPhone s = new ConcreteSmartPhone2(new ConcreteSmartPhone1(p));
        s.call();
    }
}

结果为:
装饰模式

上一篇:MySQL高级知识(十六)--- 小表驱动大表


下一篇:ant-design中表格合并单元格并填充按钮