最近,我读到了关于装饰设计模式的文章,但是留下了一些我在网上找不到的未回答的问题。我不打算显示代码,因为我不想让这个问题变得比实际更复杂。我只举一个例子:
地铁商店:
组件--> SubSandwich
ConcreteComponent ->15 15cmSub,30 15cmSub
装饰器->成分
ConcreteDecorator ->白奶酪,黄奶酪,果酱,鸡肉。。
这就是地铁商店的工作方式。选择你的核心砂子大小,然后添加所有你喜欢的配料。但我还有一些问题:
发布于 2016-06-05 17:04:03
Collections.synchronizedList(List list),它通过包装一个synchronized块来“装饰”所有方法。
您可能仍然可以在您描述的用例中使用一个装饰器,但是每个装饰步骤都必须检查它是否可以应用,如果不是,则抛出。
老实说,我甚至不知道为什么这类例子如此受欢迎。我还没见过像这样的装饰图案。它不是为添加组件而制作的。ListItem对象,您希望使用库B来显示它们。你既不能改变A生产什么,也不能改变B消耗它们的方式。但是,当您不喜欢A如何实现B用来显示的toString()方法时,您可以简单地包装一个新的toString()方法。它仍然是一个ListItem,所以B不会注意到,就像A也没有注意到任何东西一样。https://stackoverflow.com/questions/37644223
复制相似问题