装饰设计

Posted xiaozhang666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰设计相关的知识,希望对你有一定的参考价值。

装饰模式作用
在不改变原来类,也不使用继承的基础上增强类的某个功能!!
装饰者设计模式的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();

    }
}

 

以上是关于装饰设计的主要内容,如果未能解决你的问题,请参考以下文章

十条实用的jQuery代码片段

如何更改谷歌地图标记上方的标题和片段设计

添加片段时的 FlyOut 菜单设计问题

炫酷 CSS 背景效果的 10 个代码片段

高效Web开发的10个jQuery代码片段

HTML5期末大作业:餐饮美食网站设计——咖啡(10页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 咖啡网页设计 美食餐饮网页设计...(代码片段