设计模式(八)——装饰者模式

概述

我们先来看一个快餐店的例子。

快餐店有炒面、炒饭这些快餐,可以额外附加鸡蛋、火腿、培根这些配菜,当然加配菜需要额外加钱,每个配菜的价钱通常不太一样,那么计算总价就会显得比较麻烦。

使用继承存在的问题:

  • 拓展性不好:
    如果要再加一种配料,我们还需要再定义子类,产生过多的子类。

装饰者模式中的角色:

  • 抽象构件角色:定义一个抽象接口来规范准备接收附加责任的对象。
  • 具体构件角色:实现抽象构件,通过装饰者角色为其添加一些指责。
  • 抽象装饰角色:继承或实现抽象构件,并包含具体构件的实例,可以通过其子类拓展具体构件的功能。
  • 具体装饰角色:实现抽象装饰的相关方法,并给具体构件对象添加附加的责任。

案例

以上边的快餐为案例:装饰者实现代码如下:

// 抽象构件角色 快餐接口
public

版权声明:本文为weixin_40920359原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。