java回顾之装饰设计模式
1.概述
在我们今天所学的缓冲流中涉及到java的一种设计模式,叫做装饰模式。
装饰模式指的是在不改变原类, 不使用继承的基础上,动态地扩展一个对象的功能。
2.装饰设计模式写法
-
-
在装饰类中必须传入被装饰类的引用
-
在装饰类中对需要扩展的方法进行扩展
-
在装饰类中对不需要扩展的方法调用被装饰类中的同名方法
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(); } }
其实说白了,关键在引用上了。