装饰设计
Posted xiaozhang666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰设计相关的知识,希望对你有一定的参考价值。
在不改变原来类,也不使用继承的基础上增强类的某个功能!!
- 装饰类和被装饰类必须实现相同的接口 - 在装饰类中必须传入被装饰类的引用 - 在装饰类中对需要扩展的方法进行扩展 - 在装饰类中对不需要扩展的方法调用被装饰类中的同名方法
/** * 装饰类和被装饰类需要实现的接口 */ 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(); } }
以上是关于装饰设计的主要内容,如果未能解决你的问题,请参考以下文章
HTML5期末大作业:餐饮美食网站设计——咖啡(10页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 咖啡网页设计 美食餐饮网页设计...(代码片段