/* * Author: Nikolay Dvurechensky * Site: https://www.dvurechensky.pro/ * Gmail: dvurechenskysoft@gmail.com * Last Updated: 12 мая 2025 03:31:02 * Version: 1.0.7 */ /* Гибкий(плавный, текучий) строитель (интерфейс) Позволяет упростить процесс создания сложных объектов с помощью методов-цепочек, которые наделяют объект каким-то определенным качеством */ class Program { static void Main() { #region Пример №1 - базовое User user = new User().Create().SetName("Alex").SetPassword("admin"); Console.WriteLine(user); Console.ReadKey(); #endregion } } /// /// Шаблон пользователя /// class User { public string Name { get; set; } public string Password { get; set; } public UserBuilder Create() { return new UserBuilder(); } public override string ToString() { return $"Name {Name}, Password {Password}"; } } /// /// Шаблон гибкого строителя конфигурации пользователя /// class UserBuilder { private User CurrentUser { get; set; } public UserBuilder() { CurrentUser = new User(); } public UserBuilder SetName(string name) { CurrentUser.Name = name; return this; } public UserBuilder SetPassword(string password) { CurrentUser.Password = password; return this; } /// /// преобразуем тип Builder в тип User для которого он использовался /// /// строитель public static implicit operator User(UserBuilder builder) { return builder.CurrentUser; } }