2014-02-21 50 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