为什么装饰器是一种结构模式,而责任链不是?
这两个之间的唯一区别是,一个对象无论经过什么,而另一个对象将完全由一个对象处理。
这种差异如何使一个成为结构模式,而另一个变成行为模式?
答案 0 :(得分:0)
“一个人无论如何通过而另一个人将完全由一个对象处理的差异”并不是决定结构性还是行为性的。
结构图案(按照Gof格式)
关注小节和对象如何构成更大的 结构。结构模式使用继承来构成接口 或实现。
行为模式(按照政府统计)
与算法和职责分配有关 在对象之间。
在Decorator vs Chain的情况下,看来区别是学术上的,但事实仍然是Decorator符合“结构”的定义。
链也使用链表,但链表项通过继承而关联并不是必需的,但链表是关于分配或承担责任的。
这是GoF的答复,但我认为花样新手在这种情况下花太多时间思考区别是不值得的,特别是考虑到最终产品的相似性!
答案 1 :(得分:0)
好像结构模式是设计模式的其他类别。因此,问题确实在于,为什么责任链是一种行为模式,而装饰者却不是。
责任链和装饰器在一种方式上有所不同,装饰器始终遍历链中的所有对象,而责任链则由其中一个对象处理并停止链。这使得责任链成为从多种行为中选择一种行为的机制。装饰器不是要从多种行为中选择任何一种,这使其不是一种行为模式。而且,由于它也不是一种创造模式,因此必须将其归类为结构模式。