定义:装饰模式就是给一个对象增加一些新的功能,类似于继承 但又不是继承
下班回家了 想吃苹果 先定义一个吃苹果类
public class Apple {
public void eatApple() {
System.out.println("吃苹果");
}
}
然后吃完苹果肚子还是饿 再吃点饭 这个时候装饰模式就用上了 定义一个吃饭的类
public class EatGood {
private Apple mApple;
public EatGood(Apple apple) {
mApple = apple;
}
public void eatGoods() {
mApple.eatApple();
System.out.println("然后在吃饭");
}
}
运行一下
public static void main(String[] args) {
Apple apple = new Apple();
EatGood eatGood = new EatGood(apple);
eatGood.eatGoods();
}
其实这样就算结束了 不 我开玩笑的
如果我吃苹果以后不想吃饭呢 我想去散步
我还需要在EatGood 重新修改吗 不是的 新建一个散步类 运行一下
public class TakeWalk {
private Apple mApple;
public TakeWalk(Apple apple) {
mApple = apple;
}
public void take_wale() {
mApple.eatApple();
System.out.println("然后在散步");
}
}
这样就实现了装饰模式
优点: 继承的话 子类可以使用父类的所有方法 装饰模式 可以选择性的使用某些方法
利于扩展
缺点: 会创建多余的对象 消耗内存