在当前(C#)项目中,我们有一个包含非接口连接对象的第三方程序集。使用IoC等我们可以将这个具体的实例注入到我们的代码中,但它证明了单元测试等的噩梦。我们使用MoQ作为我们的模拟框架,所以理想情况下可以使用接口来解决问题不想沿着Moles之类的路线前进,因为我们希望尽量减少技术。
如果我们创建一个界面来模仿第三方连接对象的所需功能,然后创建包含第三方对象实例的该接口的实现者,那么这将允许我们的代码处理接口以及我们的IoC和单元测试会很开心。然而,在讨论中,我们已经围绕它确实是哪种设计模式!
所以问题是,“是上面描述的情况,并在下面的代码中说明:”
namespace ExampleCode
{
public interface IConnector
{
void Open();
}
public class ConnectorWrapper : IConnector
{
ThirdPartyConnector _instance;
public ConnectorWrapper(ThirdPartyConnector instance)
{
_instance = instance;
}
void Open()
{
_instance.Open();
}
}
}
答案 0 :(得分:2)
快速回答,门面。
来自我的GoF
适配器:
将类的接口转换为客户期望的另一个接口。适配器允许类一起工作,否则由于不兼容的接口而无法使用。
似乎没有出于互操作性原因,在这里说不。
代理
为另一个对象提供代理或占位符以控制对它的访问。
看起来也不好看,这不是访问问题。
门面:
为子系统中的一组接口提供统一接口。 Facade定义了一个更高级别的接口,使子系统更易于使用。
这看起来更像。您正在使用接口来抽象不同的实现,测试和应用程序。
答案 1 :(得分:1)
这绝对是一个门面。我一直这样做是为了简化过度设计的API。