Близнюки — патерн проєктування, що дозволяє імітувати множинне наслідування у мовах програмування, які цього не підтримують.
Опис
Нехай дано два класи, які потрібно успадкувати
public class ListBox { public virtual void Render() { System.Console.WriteLine("Render list box");
public class UserCollection { public virtual void GetUsers() { System.Console.WriteLine("Return collection of users");
Тоді у батьківському класі реалізуємо класи спадкоємці як внутрішні класи:
public class UserListBox { private readonly string _callerName = "UserListBox";
// батьківський клас містить посилання на кожного із нащадків private readonly InnerUserCollection _userCollection;
public UserListBox() { _userCollection = new InnerUserCollection(this);
// батьківський клас реалізовує поведінку всіх класів, що наслідує public static implicit operator UserCollection(UserListBox userListBox) => userListBox._userCollection;
private class InnerUserCollection : UserCollection { // кожний спадкоємець містить посилання на батьківський клас private readonly UserListBox _parent;
public InnerUserCollection(UserListBox parent)
this._parent = parent;
public override void GetUsers()
// доступ до приватних членів батьківського класу System.Console.WriteLine(_parent._callerName);
base.GetUsers();
Реалізація
C#
Див.також Шаблони проєктування програмного забезпечення Об’єктно-орієнтоване програмування