我已经创建了下面的接口的多个实施方式和混乱:接口,具有大约参数
public interface IReader
{
string Read();
}
一种实现这一点,是一个封装的逻辑读入基于存储在所述的路径上从磁盘XML文件的XmlFileReader配置文件。
它的另一个实现是FileReader,它将根据指定的路径作为参数从磁盘读取文件。
现在令人困惑的是,XMLFileReader在Read()方法中不需要任何参数,而FileReader则需要这样的参数。我应该为IReader.Read()方法添加一个可选参数,以便在FileReader的情况下,我可以使用参数提供文件路径,而在XMLFileReader的情况下,不会使用该参数?
另一种选择是使用带参数的Read()方法创建单独的接口。
什么是这种情况下的好设计?
为什么你认为两个不同的调用应该是相同的抽象? – Euphoric
原因是它是相同的操作,即读取操作。区别在于路径是由调用者提供的还是从配置文件中提取的。你有什么建议? –
如果调用者提供的参数不同,则它们是不同的操作。仅仅因为他们被称为相同的名称并不会使他们相同。 – Euphoric