Близнюки — патерн проєктування, що дозволяє імітувати множинне наслідування у мовах програмування, які цього не підтримують.

Опис

Нехай дано два класи, які потрібно успадкувати

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#

Див.також Шаблони проєктування програмного забезпечення Об’єктно-орієнтоване програмування