0

Нужно реализовать модель MVC примерно так, но где класс человека имеет класс Telecoms, который может быть фононой или классом PhonelineAndBroadband, где я могу легко получить доступ к методу ITELCOM Price() для список . Это лучший способ приблизиться к этому? Что будет в классе Person?MVC Model с унаследованным вложенным классом

class Person 
{ 

} 

abstract class Telecoms 
{ 

} 

interface ITelecoms 
{ 
    void Price(); 
} 

class Phoneline : Telecoms, ITelecoms 
{ 
    public void Price() {...}  
} 

class PhonelineAndBroadband : Telecoms, ITelecoms 
{ 
    public void Price() {...}  
} 

ответ

0

Что бы я рекомендовал использовать только абстрактный класс. Какой будет ваш базовый класс. Он будет содержать метод , который содержит метод Price(). Затем вы можете избавиться от полиморфизма, одной из основ объектно-ориентированного программирования, чтобы реализовать этот метод в подклассах. Итак, исключите интерфейс, потому что цена() будет доступна в абстрактном классе Base, а не повысит сложность вашего дизайна с добавлением интерфейса ITelecom.

abstract class Telecoms 
{ 
    public abstract void Price(); 
} 

А затем для подклассов

class Phoneline : Telecoms 
{ 
    public override void Price() {...}  
} 

class PhonelineAndBroadband : Telecoms 
{ 
    public override void Price() {...}  
} 

с кодом, как это, вы будете иметь чистый, компактный, OO уважая дизайн.

0

Класс лица должен иметь свойство типа 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()); 
Смежные вопросы