是否存在始终返回单个对象的存储库的设计模式?

时间:2015-12-12 07:12:46

标签: c# design-patterns repository-pattern ddd-repositories

我正在开发一个应用程序,它将来自另一个API的对象转换为我自己的类型并返回。我通过许多存储库类公开了这个功能,这些存储库类是从我正在使用的API中传递Document对象的。所有存储库类都基于以下接口。

public interface IRepository<T> where T : INamed
{
    void Add(T toAdd);
    T Get(string name);
    IDictionary<string, T> GetAll();
    ICollection<string> GetNames();
    void Update(T toUpdate);
    void Delete(string name);
}

INamed只强制实体拥有Name属性,因为每个属性都由Document中的唯一名称标识。

public interface INamed
{
    string Name { get; set; }
}

但是,Document还包含许多设置/属性对象,每个文档只有一个实例。因此,这些类型在文档中没有名称来标识它们。然而,我仍然希望创建某种通用接口,用于从/ Document获取/设置这些对象。

我想使用的简单界面如下。但我不喜欢我在名称中使用“Repository”这个词,因为这意味着我脑海中的一系列项目。

public interface ISingleItemRepository<T>
{
    T Get();
    void Set(T item);
}

这看起来像其他一些具有不同名称的常见设计模式吗?

1 个答案:

答案 0 :(得分:0)

像Unity那样的IoC容器使用术语Lifetime Manager来处理这类事情(即SingletonLifetimeManager)。不是模式而是命名约定......