Какой паттерн лучше использовать при необходимости реализации методов из разных классов? Пожалуйста, подскажите Есть интерфейс/абстрактный класс В нем 2 метода без реализации M1 и M Есть класс B, отнаследованный от Есть класс C, отнаследованный от В обоих своя реализация методов M1 и M Предположим, мне надо создать класс D, в котором M1 содержит реализацию класса B, а метод M2 реализацию класса C Множественного наследования в C# нет. Есть какое-нибудь общепринятое решение или готовый паттерн для таких ситуаций?
В данном случае можно воспользоваться паттерном композиции или делегирования.
Вы можете создать класс D, который будет содержать в себе экземпляры классов B и C, и делегировать выполнение методов M1 и M2 соответственно экземплярам классов B и C.
Примерно так:
public interface
void M1() void M2()
public class B :
public void M1(
// Реализация M1 для класса
public void M2(
// Реализация M2 для класса
public class C :
public void M1(
// Реализация M1 для класса
public void M2(
// Реализация M2 для класса
public class D :
private B b = new B() private C c = new C() public void M1(
b.M1()
public void M2(
c.M2()
}
Таким образом, класс D будет содержать в себе экземпляры классов B и C, и делегировать реализацию методов M1 и M2 соответственно этим экземплярам.
В данном случае можно воспользоваться паттерном композиции или делегирования.
Вы можете создать класс D, который будет содержать в себе экземпляры классов B и C, и делегировать выполнение методов M1 и M2 соответственно экземплярам классов B и C.
Примерно так:
public interfacevoid M1()
void M2()
public class B :
public void M1(
// Реализация M1 для класса
public void M2(
// Реализация M2 для класса
public class C :
public void M1(
// Реализация M1 для класса
public void M2(
// Реализация M2 для класса
public class D :
private B b = new B()
private C c = new C()
public void M1(
b.M1()
public void M2(
c.M2()
}
Таким образом, класс D будет содержать в себе экземпляры классов B и C, и делегировать реализацию методов M1 и M2 соответственно этим экземплярам.