这只是我对问题的更切题的看法,但根据传统的面向对象设计准则,用户是一个人,因此你获得了继承。 然而,当我们查看 SOLID 原则时,特别是“替换原则”:“使用基类的指针或引用的函数必须能够在不知情的情况下使用派生类的对象。” - ,LSP 该论文链接到“OOD 原则”是什么意思? 好吧,我们应该能够用父类替换子类的实例,并且一切都应该继续工作。 在这种情况下它不起作用,有一些额外的属性您依赖于一个用户不具有的属性。 在这种情况下,你有没有考虑过用组合来代替继承呢?
public class Person { public static void InputPerson(Person p) { // Do the input logic here } } public class User { public Person Person { get; private set; } public static void InputUser(User u) { if (u.Person == null) u.Person = new Person; Person.InputPerson(u.Person); Console.WriteLine("Telephone:"); u.Telephone = Console.ReadLine(); } }
我们可以进一步深入 SOLID,查看单一职责原则,并询问 /User 对象是否处理作为一个人的逻辑,但它是否应该知道从控制台创建该对象? 如果您想为您的应用程序或 WPF 应用程序重用相同的逻辑,会发生什么情况?