装饰图案装饰限制

时间:2016-09-26 02:28:01

标签: java design-patterns decorator

我目前正在使用装饰器模式编写程序。我试图找出如何限制我可以添加到第一类的装饰器数量。如:

Pizza plainPizza = new PlainPizza;
Pizza sausage = new Sausage(plainPizza);

我怎么能编码这个我可以限制在我添加的装饰器数量的地方。例如,如果我尝试在前面的代码之上添加它:

Pizza pepperoni = new Pepperoni(sausage);

如何防止它添加/包裹意大利辣香肠?

我试图使用throw异常,但问题是,我的装饰器调用它的超类,所以我无法在初始化实例变量之前进行测试!

1 个答案:

答案 0 :(得分:0)

您可以使用Builder pattern创建一个构建器,该构建器将应用您需要的所有类型的装饰器。如果尝试添加超过允许的数量,Builder还可以在内部跟踪您应用了多少装饰器并作出相应的反应。