Задать вопрос
@mletov

Какой паттерн лучше использовать при необходимости реализации методов из разных классов?

Пожалуйста, подскажите:

Есть интерфейс/абстрактный класс A
В нем 2 метода без реализации M1 и M2

Есть класс B, отнаследованный от A
Есть класс C, отнаследованный от A

В обоих своя реализация методов M1 и M2

Предположим, мне надо создать класс D, в котором M1 содержит реализацию класса B, а метод M2 реализацию класса C.

Множественного наследования в C# нет. Есть какое-нибудь общепринятое решение или готовый паттерн для таких ситуаций?
  • Вопрос задан
  • 275 просмотров
Подписаться 1 Простой 2 комментария
Решение пользователя Алексей Павлов К ответам на вопрос (4)
lexxpavlov
@lexxpavlov
Программист, преподаватель
Композиция, а не наследование.
D реализует IM1 и IM2, но не наследуется от классов A, B, C.
class D : IM1, IM2
{
    B _b;
    C _c;
    public D(B b, C c)
    {
        _b = b;
        _c = c;
    }

    public void M1()
    {
        _b.M1();
    }

    public void M2()
    {
        _c.M2();
    }
}
Ответ написан
Комментировать