3

为什么代理模式是结构模式,为什么状态模式是行为模式。确定新模式应被视为结构性还是行为性的标准是什么?

4

2 回答 2

6

如果重点是如何组织对象之间的关系以形成更大的组件,则模式是结构化的,而行为模式则侧重于对象职责的分配以及它们之间的通信

代理是结构性的,因为它充当另一个对象的代理,状态是行为性的,因为状态被传递给对象以在运行时影响其行为。

于 2011-05-17T07:46:30.280 回答
3

让我们从结构和行为模式的定义开始。

结构模式:结构模式关注如何组合类和对象以形成更大的结构。继承是结构类模式用来组成实现或接口的机制。结构对象模式说明了以向对象提供新功能的方式组合对象的方法。

行为模式:行为模式是实现算法并关注对象之间分配职责的模式。它们还描述了对象和类之间的通信模式。通过使用行为模式,设计师能够将他/她的注意力从控制流中转移出来,并将他/她的注意力集中在对象相互连接的方式上。行为类模式通过使用面向对象的继承技术在类之间分配行为。另一方面,行为对象模式使用对象组合来执行它们的功能。

如果您仔细考虑这些,那么整个前提是,如果它与建模类/对象结构有关,请选择结构模式,如果您正在处理不断变化的行为,那么行为模式将助您一臂之力。

在代理的情况下,您只是包装目标并转发呼叫。在状态的情况下,您实际上使用继承(如上面的定义中所述)并因此使用多态性来更改运行时行为。

希望有帮助。

于 2011-05-17T09:36:12.243 回答