具有继承嵌套类的 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() {...}    
}

具有继承嵌套类的 MVC 模型

我要重新命令的是只使用抽象类。这将是您的基类。它将包含一个包含 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());