Близнюки (шаблон проєктування)

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

Опис[ред. | ред. код]

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

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#[ред. | ред. код]

Див.також[ред. | ред. код]