设计模式混乱

时间:2011-11-02 12:39:12

标签: c# design-patterns

我正在刷新我的设计模式,当我遇到这个教程时有点困惑:

http://www.asp.net/mvc/tutorials/iteration-4-make-the-application-loosely-coupled-cs

如果查看清单7以后,作者说它正在使用装饰器模式。但是,这种模式的主要原则之一是包装对象和ADD职责和行为吗?

我认为它看起来更像是适配器模式,因为它正在调整MVC特定的ModelStateDictionary以使用更灵活的IValidationDictionary,以便在使用WPF等时可以将不同的实现与服务一起使用。添加了新的责任或行为。

我是否正确?如果我错了可以请任何人解释原因吗?

由于

2 个答案:

答案 0 :(得分:2)

我认为你是对的,并且帖子中有错误。来自文章:

  

Decorator模式允许您将现有类包装在新类中   class以实现接口。

这不完全正确 - 装饰器允许你将一个实现包装在另一个实现中,但目的通常不是实现另一个接口,而是用新功能“装饰”实例。适配器模式允许您使用两个不同的接口,并将一个实例修改为另一个实例。

答案 1 :(得分:2)

我同意你的看法,就像Adapter Pattern一样,就是ModelStateDictionary是在接口IValidationDictionary(适配器接口)后面使用具体类型抽象的(适配器)以便以后可以更改实现。

Decorator Pattern通常通过合成提供附加功能,公开与装饰类型相同的界面。这通常通过子类或通过接口实现来完成。

装饰器的一个例子是:

  1. 您有一个从数据库中提取“对象”的存储库类
  2. 您有一个存储库装饰器类,可以缓存对象,而无需每次都从数据库中获取它们。此装饰器类通过对原始存储库类进行子类化并覆盖Get()方法以首先检查项目的缓存来提供缓存提取和检索组合(并且将覆盖Save()以更新缓存以及数据库)。