java回顾之装饰设计模式
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();
}
}
其实说白了,关键在引用上了。

浙公网安备 33010602011771号