【发布时间】:2017-04-21 03:09:11
【问题描述】:
我觉得我已经多次使用这些模式系列,但是,对我来说很难看出它们之间的差异,因为它们的定义非常相似。基本上,它们似乎都是关于包装另一个或多个对象以用额外的东西扩展或包装它们的行为。
举个简单的例子,在存储库模式上实现缓存机制似乎就是这种情况。这是我可能会开始使用的快速示例C# 代码。
public interface IRepository {
IEnumerable<T> GetItems<T>();
}
public class EntityFrameworkRepository : IRepository {
...
}
public class CachedRepository : IRepository {
private IRepository _repository;
private ICacheProvider _cache;
public CachedRepository(IRepository repository, ICacheProvider cache) {
this._repository = repository;
this._cache = cache;
}
public IEnumerable<T> GetItems<T>() {
...
}
}
例如,这些模式中的哪一种适用于这种情况?谁能简要说明一下理论和实践的区别?
【问题讨论】:
标签: c# design-patterns