2014-09-25 69 views
0

我有那種如何區分同一類的兩個方法參數?

doStuff(DataHolder in, DataHolder out) 

類DataHolder是最後的方法很多。我想確保人們在使用該方法時不會換入和換出,這是確保最簡單的方法嗎?我寧願不使用使用getter和setters。

+0

做更具體的類?也許'DataHolderIn'和'DataHolderOut'? – 2014-09-25 09:05:37

+1

@EvanKnowles:「類DataHolder是最終的」,大概是從圖書館收到的,不在OP的控制之下。 – Amadan 2014-09-25 09:06:01

+0

閱讀該方法的文檔。所以包含文檔:) – 2014-09-25 09:06:08

回答

3

您可以使用兩種包裝類:

class WrapperDataHolderIn{ 
    public WrapperDataHolderIn(DataHolder data) 
} 

而且

class WrapperDataHolderOut{ 
    public WrapperDataHolderOut(DataHolder data) 
} 

注意:在繼承青睞組成(綜合複用原則)

0

你有兩個簡單的選擇:

DataHolder doStuff (DataHolder in); 

class InDataHolder extends DataHolder { 
    // Empty! 
} 
class OutDataHolder extends DataHolder { 
    // Empty! 
} 
doStuff(InDataHolder in, OutDataHolder out); 
+0

DataHolder是最後的 – farmer1992 2014-09-25 09:35:17

0

至於建議的@Pham的Trung,

您可以使用兩種包裝類:

class WrapperDataHolderIn{ 
public WrapperDataHolderIn(DataHolder data) 
} And 

class WrapperDataHolderOunt{ 
public WrapperDataHolderOut(DataHolder data) 
} 

,但我還會加上:

public doStuff(WrapperDataHolderIn in, WrapperDataHolderOut out) { 
    doStuff(in.getDataHolder(), out.getDataHolder()); 
} 

private doStuff(DataHolder in, DataHolder out) { 
    // do stuff 
} 

這樣,一切對於doStuff方法都是透明的。

這是Adapter pattern的典型實現。

0

如此的相似,範忠的一個一個想法是

調用doStuff像

in(in).out.(out).doStuff() 

in()out()返回this

+0

這是個好主意嗎? – Paolo 2014-09-25 09:57:47

相關問題