我有一种情况,我试图让我的模型和实现尽可能松散耦合,但是我面临的情况是耦合可能比我想要的更接近。
我有一系列“模型”类,所有实现接口。此外,我还有“数据访问”类,它们提供了许多函数,其中之一是将整数查找值解码为其完整的“对象”表示。
在我的模型类中,我想提供对这些解码值的访问,而不需要模型知道数据访问类。
一个简化的例子是:
/// Core classes --
class Car : ICar
{
public int MakeId { get {...} set { ... } }
public IMakeInfo Make { get {...} }
public string Registration { get { ... } set { ... } }
public int CurrentOwnerId { get { ... } set { ... } }
public IPerson CurrentOwner { get { ... } }
}
class MakeInfo : IMakeInfo
{
public string Name { ... }
public int Id { ... }
public decimal Weight { ... }
// etc etc
}
/// Data Access Classes --
class ResolveMake
{
public IMakeInfo GetMakeInfo(int id)
{
// Implementation here...
}
}
如何使Car
该类能够将IMakeInfo
对象提供给任何消费类而不直接使其知道 ResolveMake 类?在实际实例中,我使用的 Car 类与 ResolveMake 类不在同一个命名空间中,并且它不包含对它的任何实例的引用。
我的一些选择:
- 实现一个
Car
可以提供GetMakeInfo
方法实例的委托。 - 某种依赖注入
- 将 Car 紧密耦合到 ResolveMake 并完成它。
- 还有其他选择吗?
欢迎任何建议!