是否存在始终 returns 单个对象的存储库设计模式?
Is there a design pattern for a repository that always returns a single object?
我正在开发一个应用程序,它将对象从另一个 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
还包含许多 settings/attribute 个对象,每个文档只有一个实例。因此,这些类型在文档中没有名称来标识它们。然而,我仍然想为 getting/setting 这些对象 from/to 和 Document
创建某种通用接口。
我想使用的简单界面如下。但我不喜欢我在名称中使用 "Repository" 这个词,因为这在我的脑海中暗示了一个项目的集合。
public interface ISingleItemRepository<T>
{
T Get();
void Set(T item);
}
这看起来像其他一些名称不同的常见设计模式吗?
像 Unity 这样的 IoC 容器使用术语 Lifetime Manager 来表示这些东西(即 SingletonLifetimeManager)。不是模式而是命名约定...
我正在开发一个应用程序,它将对象从另一个 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
还包含许多 settings/attribute 个对象,每个文档只有一个实例。因此,这些类型在文档中没有名称来标识它们。然而,我仍然想为 getting/setting 这些对象 from/to 和 Document
创建某种通用接口。
我想使用的简单界面如下。但我不喜欢我在名称中使用 "Repository" 这个词,因为这在我的脑海中暗示了一个项目的集合。
public interface ISingleItemRepository<T>
{
T Get();
void Set(T item);
}
这看起来像其他一些名称不同的常见设计模式吗?
像 Unity 这样的 IoC 容器使用术语 Lifetime Manager 来表示这些东西(即 SingletonLifetimeManager)。不是模式而是命名约定...