我已經創建了下面的接口的多個實施方式和混亂:接口,具有大約參數
public interface IReader
{
string Read();
}
一種實現這一點,是一個封裝的邏輯讀入基於存儲在所述的路徑上從磁盤XML文件的XmlFileReader配置文件。
它的另一個實現是FileReader,它將根據指定的路徑作爲參數從磁盤讀取文件。
現在令人困惑的是,XMLFileReader在Read()方法中不需要任何參數,而FileReader則需要這樣的參數。我應該爲IReader.Read()方法添加一個可選參數,以便在FileReader的情況下,我可以使用參數提供文件路徑,而在XMLFileReader的情況下,不會使用該參數?
另一種選擇是使用帶參數的Read()方法創建單獨的接口。
什麼是這種情況下的好設計?
爲什麼你認爲兩個不同的調用應該是相同的抽象? – Euphoric
原因是它是相同的操作,即讀取操作。區別在於路徑是由調用者提供的還是從配置文件中提取的。你有什麼建議? –
如果調用者提供的參數不同,則它們是不同的操作。僅僅因爲他們被稱爲相同的名稱並不會使他們相同。 – Euphoric