首页 > 其他 > 详细

装饰设计

时间:2020-06-30 10:53:58      阅读:47      评论:0      收藏:0      [点我收藏+]
装饰模式作用
在不改变原来类,也不使用继承的基础上增强类的某个功能!!
装饰者设计模式的4个基本步骤
- 装饰类和被装饰类必须实现相同的接口
- 在装饰类中必须传入被装饰类的引用
- 在装饰类中对需要扩展的方法进行扩展
- 在装饰类中对不需要扩展的方法调用被装饰类中的同名方法
/**
 * 装饰类和被装饰类需要实现的接口
 */
public interface Star {
    /**
     * 唱歌
     */
    void sing();

    /**
     * 跳舞
     */
    void dance();
}
/**
 * 原有类,被装饰类,需要实现star接口
 */
public class LiuDeHua implements Star{

    public void sing(){
        System.out.println("啊哈,给我一杯忘情水...");
    }

    public void dance(){
        System.out.println("蹦恰恰...蹦恰恰...");
    }
}

/**
 * 装饰类,也需要实现Star接口
 */
public class LiuDeHuaWrapper implements Star {

    private LiuDeHua ldh;

    public LiuDeHuaWrapper(LiuDeHua ldh){
        this.ldh = ldh;
    }

    @Override
    public void sing() {
        System.out.println("唱歌前喝口水...");
        ldh.sing();
        System.out.println("唱歌后吃个糖...");
    }

    @Override
    public void dance() {
        ldh.dance();
    }
}
public class TestDemo {
    public static void main(String[] args) {
        //1.创建一个被装饰类对象
        LiuDeHua ldh = new LiuDeHua();
        //2.创建一个装饰类对象
        LiuDeHuaWrapper wrapper = new LiuDeHuaWrapper(ldh);
        //3.调用方法
        wrapper.sing();
        wrapper.dance();

    }
}

 

装饰设计

原文:https://www.cnblogs.com/xiaozhang666/p/13211917.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!