使用接口的全部意义在于您可以使用多态,这意味着您永远不必检查实例的类型.这样做是一个非常大的代码味道(见Fowlers Refacotring).将条件逻辑移动到具体类,并添加te函数,将其处理到接口
编辑(添加代码示例,因为最初的帖子是从手机完成的):
你正在努力:
void Main(string[] args) { Bird bird = BirdFactory.GetPigeon(); if (bird.GetType().Equals(typeof(Duck))) { Console.WriteLine("quack"); } else if (bird.GetType().Equals(typeof(Pigeon))) { Console.WriteLine("coo coo"); } }
相反,尝试:
interface Bird { void Speak(); } class Duck : Bird { void Speak() { Console.Write("quack"); } } class Pigeon : Bird { void Speak() { Console.Write("coo coo"); } } void Main(string[] args) { Bird bird = BirdFactory.GetPigeon(); bird.Speak(); }