我正在编写一个客户端/服务器应用程序,其中客户端是 Windows 窗体应用程序,服务器是托管在 Windows 服务中的 WCF 服务。请注意,我控制应用程序的双方。
我正在尝试实现针对接口进行编码的实践:即我有一个由客户端应用程序引用的共享程序集。这个项目包含我的 WCF ServiceContracts 和接口,它们将暴露给客户。我试图只向客户端公开接口,以便它们只依赖于合同,而不是任何特定的实现。这样做的原因之一是我可以随时进行服务实现和域更改,而无需重新编译和重新部署客户端。在这种情况下,接口/合同不会改变。我只需要重新编译和重新部署我的 WCF 服务。
我现在面临的设计问题是:在客户端,我如何创建对象的新实例,例如ICustomer
,如果客户端不知道Customer
具体的实现?我需要创建一个新客户以保存到数据库中。
我是使用依赖注入,还是使用工厂类来实例化新对象,还是应该只允许客户端创建具体实现的新实例?
我不做 TDD,我通常只有一个实现ICustomer
或任何其他公开的接口。