2014-02-21 51 views
0

我们的项目需要我们与Oracle DB,SalesForce等信息的多个源进行交互。因此,我们想要将所有调用包装在WCF层下,以便公司内的任何人都可以使用它。为了实现域对象,这是一个考虑因素:使用接口的WCF业务对象设计

public class NoteTypeA : INote, INoteTypeA {} 
public class NoteTypeB : INote, INoteTypeB {} 
public class Customer : INote, ICustomer {} 

所有注释类,如NoteTypeA,NoteTypeB,NoteTypeC都将从INote继承,但他们也将从INoteTypeA继承,在NoteTypeA的情况。

我同意使用INote的想法,因为它可以帮助您实现多重继承。但我没有得到使用INoteTypeA的原因,它的外观像anti-pattern对我来说。

你们认为什么? 这是否保护我免受未来的变化? 它是否帮助我平稳地增加了范围更改?

回答

0

我认为这在很大程度上是主观性的,取决于实施。

我通常不会为我的类创建接口,如果它们只是数据容器,但是如果它们具有业务逻辑功能,那么我就可以。

+0

谢谢。关于保护将来的变化,如果我编写方法返回接口而不是具体的类。这真的会给我使用接口带来什么好处吗? – sunny24365

+1

@ sunny24365 - 如果你的WCF方法返回接口,它们会以'object'的形式出现,因为一个接口不包含数据。这意味着客户必须知道接口才能正确投射返回的数据。这很容易用共享程序集完成,但这可能是您不想做的事情,具体取决于您的业务需求。如果可能的话,我会建议不要返回接口,并返回具体的类型。 – Tim

+1

@Tim - 如果是这样的话,那么我没有看到为什么我甚至需要在上面的例子中创建INoteTypeA,INoteTypeB接口的原因。正确? – sunny24365