考虑这样的事情是件好事。它肯定会帮助您完成更复杂的项目。您当然可以创建一个 IWritable 接口或具有具体实现的抽象类。就像是:
public interface IWritable
{
void Write(string text);
}
public class ConsoleWriter : IWritable
{
public void Write(string text)
{
Console.WriteLine(text);
}
}
然后你的Drive()
方法可以接受一个IWritable
参数。
public class Car
{
public void Drive(IWritable writable)
{
writable.Write("I'm driving!");
}
}
new Car().Drive(new ConsoleWriter());
当然,如果你的类有几个方法需要做类似的事情,你可以考虑改变构造函数来接受一个IWritable
参数并将它存储在一个字段中:
public class Car
{
private readonly IWritable _writer;
public Car(IWritable writer)
{
_writer = writer;
}
public void Drive()
{
_writer.Write("I'm driving!");
}
}
以这种方式做事的另一个好处是它使您的类的单元测试更加简单。您可以向它传递一些不会弄乱您的日志文件或更新您的数据库的无害编写器,但仍然让您测试该类。