java回顾之装饰设计模式

java回顾之装饰设计模式

1.概述

在我们今天所学的缓冲流中涉及到java的一种设计模式,叫做装饰模式。

装饰模式指的是在不改变原类, 不使用继承的基础上,动态地扩展一个对象的功能。

2.装饰设计模式写法

  1. 装饰类和被装饰类必须实现相同的接口

  2. 在装饰类中必须传入被装饰类的引用

  3. 在装饰类中对需要扩展的方法进行扩展

  4. 在装饰类中对不需要扩展的方法调用被装饰类中的同名方法

3.代码演示

public interface Star {
    //会唱跳
    public void singdance();
    //rap
    public void rap();
    //篮球
    public void ball();
}


//蔡徐坤
public class CaiXuKun implements Star{
    //要求:这个类不能做任何修改,但是我要修改某个方法的功能
    //唱跳
    public void singdance(){
        System.out.println("唱鸡你太美跳动次打次");
    }
    //rap
    public void rap(){
        System.out.println("蛋黄的长裙 蓬松的头发");
    }
    //篮球
    public void ball(){
        System.out.println("在你头上暴扣");
    }
}
//蔡徐坤增强类
public class BufferedCaiXuKun implements Star{
    //在装饰类中必须传入被装饰类的引用
    CaiXuKun cxk;
    //有参构造
    public BufferedCaiXuKun(CaiXuKun cxk) {
        this.cxk = cxk;
    }

    @Override
    public void singdance() {
        cxk.singdance();
    }

    @Override
    public void rap() {
        System.out.println("你这这个碗他又大又圆");
        System.out.println("你看这个面他又长有宽");
    }

    @Override
    public void ball() {
        cxk.ball();
    }
}

public class Demo装饰设计模式 {
    public static void main(String[] args) {

        //创建增强类对象
        BufferedCaiXuKun xck = new BufferedCaiXuKun(new CaiXuKun());

        //可以对类的某些方法进行增强

        //调用方法
        xck.singdance();
        xck.rap();
        xck.ball();
    }
}

  其实说白了,关键在引用上了。

posted @ 2020-10-28 21:28  springcode  阅读(69)  评论(0)    收藏  举报