装潢模式

Posted shadow-demo

tags:

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

装潢模式

我的理解是,装潢模式的作用就是:扩展类的功能但不修改类,也就是依赖倒置原则

用普通白饭和蛋炒饭举个例子

Food是他们都实现了的接口

public interface Food {
    double getPrice();
}

Rice(白饭)实现了Food接口

public class Rice implements Food {

    @Override
    public double getPrice() {
        return 2.0;
    }

}

蛋炒饭(EggRice)也实现了Food接口,并且持有一个实现了Food接口的对象,也就是普通白饭(EggRice装饰了Rice)

public class EggRice implements Food {

    private Food food;
    private double eggPrice = 1.0;

    public EggRice(Food food) {
        this.food = food;
    }

    @Override
    public double getPrice() {
        return food.getPrice() + eggPrice;
    }

}

测试类

public class Main {
    public static void main(String[] args) {

        Rice rice = new Rice();
        System.out.println("一碗饭要" + rice.getPrice() + "钱");
        EggRice eggRice = new EggRice(rice);
        System.out.println("一碗蛋炒饭要" + eggRice.getPrice() + "钱");
    }
}

输出结果是:

一碗饭要2.0钱
一碗蛋炒饭要3.0钱

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

用于从 cloudkit 检索单列的代码模式/片段

装饰者模式

IMSI.FloorPlan.3D.Design.Suite.v9.0 1CD(一套完整的家居装潢设计软件)

尝试使用片段保存夜间模式状态

是否有在单个活动中处理多个片段的 Android 设计模式?

设计模式——装饰器模式(Decorator Pattern)