具有继承嵌套类的 MVC 模型
本文关键字:MVC 模型 嵌套 继承 | 更新日期: 2023-09-27 18:35:10
希望实现一个MVC模型,有点像这样,但是一个人类有一个电信类,可以是电话线或PhonelineAndBroadband 类,我可以轻松地访问ITelecom Price()方法以获取列表。这是解决这个问题的最好方法吗?在"人"类中会有什么内容?
class Person
{
}
abstract class Telecoms
{
}
interface ITelecoms
{
void Price();
}
class Phoneline : Telecoms, ITelecoms
{
public void Price() {...}
}
class PhonelineAndBroadband : Telecoms, ITelecoms
{
public void Price() {...}
}
我要重新命令的是只使用抽象类。这将是您的基类。它将包含一个包含 Price() 方法的抽象方法。然后,您可以摆脱多态性,这是面向对象编程的基础之一,以便将此方法实现到子类中。因此,请消除接口,因为 Price() 将在 Base 抽象类中访问,而不是通过添加 ITelecoms 接口来提高设计的复杂性。
abstract class Telecoms
{
public abstract void Price();
}
然后对于您的子类
class Phoneline : Telecoms
{
public override void Price() {...}
}
class PhonelineAndBroadband : Telecoms
{
public override void Price() {...}
}
使用这样的代码,您将拥有一个干净,紧凑,尊重OO的设计。
Person 类应具有类型 ITelecoms
的属性。
public class Persons
{
public ITelecoms Telecom {get;set;}
}
Person p1 = new Person {Telecom = new Phoneline()};
Person p2 = new Person {Telecom = new PhonelineAndBroadband()};
List<Person> persons = new List<Person>{p1, p2};
persons.ForEach(r=> r.Telecom.Price());