русский

Как сейчас с работой '25?

6 Tagen zurück, 11:19
Re: Как сейчас с работой '25?
 
Отпускник gekickt bis 15/1/26 13:49 местный житель
in Antwort alex445 30.12.25 11:36

пришлось вспоминать, что такое паттерн декоратор


И как ты напишешь такое с методами расширения?

https://chatgpt.com/s/t_695ce182652881919e5252d050d392d7

// Базовый компонент

public interface IMessageSender

{

void Send(string message);

}

// Конкретный компонент

public class EmailSender : IMessageSender

{

public void Send(string message)

{

Console.WriteLine($"Отправка Email: {message}");

}

}

// Базовый декоратор

public abstract class MessageSenderDecorator : IMessageSender

{

protected readonly IMessageSender _sender;

protected MessageSenderDecorator(IMessageSender sender)

{

_sender = sender;

}

public virtual void Send(string message)

{

_sender.Send(message);

}

}

// Конкретный декоратор

public class LoggingDecorator : MessageSenderDecorator

{

public LoggingDecorator(IMessageSender sender) : base(sender) { }

public override void Send(string message)

{

Console.WriteLine("Логирование отправки...");

base.Send(message);

}

}

// Ещё один декоратор

public class EncryptionDecorator : MessageSenderDecorator

{

public EncryptionDecorator(IMessageSender sender) : base(sender) { }

public override void Send(string message)

{

message = $"ENCRYPTED({message})";

base.Send(message);

}

}


IMessageSender sender =

new LoggingDecorator(

new EncryptionDecorator(

new EmailSender()));

sender.Send("Hello");

 

Sprung zu