我們剛剛和大學討論過以下可以接受的oop與否的樣式。oop:在具體情況下的構成或繼承
我們還有一類,它有一個公共職能,並要求在構造讀者:
public class Converter
{
private readonly IReader _reader;
public Converter(IReader reader)
{
_reader = reader;
}
public byte[] Convert(...params...)
{
return something;
}
}
我們有Reader1和Reader2這兩者實施的iReader。
我想設置兩個管理器:Converter1和Converter2,提供相同的公共Convert()函數,但Converter1將使用Reader1,而Converter2將使用Reader2。
對我來說,最簡單的解決方案是從轉換器繼承以及適當的閱讀器初始化:
public class Converter1 : Converter
{
public Converter1():base(new Reader1())
{}
}
public class Converter2 : Converter
{
public Converter2():base(new Reader2())
{}
}
我的大學說,這Converter1和Converter2是經理,和繼承不應該用於管理人員,而不是我們應該在這裏應用作文。但從我的角度來看,組合只會導致特定轉換器類中的額外代碼。
那麼,請問您可否請指教,是否可以在執行經理時使用繼承? 謝謝
靜態方法並非如此,因爲我需要將這些Converter1/Conerter2推入其他類的構造函數中,並且調用靜態方法不會是單元可測試的。 將工廠注入消費者類也太多了。 我絕對需要兩個經理類,但你可能是對的,繼承不是這裏最好的東西.. :) – Shaddix 2010-08-10 11:13:14