zoukankan      html  css  js  c++  java
  • 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();
        }
    }
    

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

  • 相关阅读:
    MyEclipse中快速查看错误
    MyEclipse中快速跳转到指定行号位置
    MyEclipse关闭当前正在编辑的页面
    dict、defaultdict 和 OrderedDict 比较
    过滤器的使用
    cookie和session
    session的使用
    Java的常量和变量
    Java面向对象
    Java方法
  • 原文地址:https://www.cnblogs.com/gushiye/p/13893623.html
Copyright © 2011-2022 走看看