我目前正在编写一个使用装饰器模式的程序。我正在尝试找出如何限制我可以添加到第一个类的装饰器的数量。例如:
Pizza plainPizza = new PlainPizza;
Pizza sausage = new Sausage(plainPizza);在我可以限制我添加的装饰器数量的情况下,我如何编写代码呢?例如,如果我尝试将此代码添加到前面的代码之上:
Pizza pepperoni = new Pepperoni(sausage);我如何防止它允许添加/包装意大利香肠?
我试图使用一个抛出异常,但问题是,我的装饰器调用了它的超类,所以我无法在初始化实例变量之前进行测试!
发布于 2016-09-26 22:34:53
您可以使用Builder pattern创建一个构建器,该构建器将应用您需要的所有类型的装饰器。Builder还可以在内部跟踪您应用的装饰器的数量,并在尝试添加超过允许的装饰器数量时做出相应的反应。
https://stackoverflow.com/questions/39693886
复制相似问题