2016-09-26 198 views
0

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

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

我怎么能这样编码,我可以限制在我添加的装饰器的数量。比如,如果我尝试添加这在以前的代码的顶部:

Pizza pepperoni = new Pepperoni(sausage); 

我怎样才能防止它允许添加/包辣?

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

+1

你不能。这是装饰者模式的要点。 –

+0

听起来更像装饰者模式不适合你的用例。 –

+0

@XaverKapeller这是我的教授在实验室里做的。这是许多任务之一。不知道该怎么做。我试图抛出异常,但我不能,因为在测试count之前我会调用super。 – Cole

回答

0

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