Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace Decorator
- {
- public abstract class Writer
- {
- public abstract void Write(string message);
- }
- public class BasicWriter : Writer
- {
- public override void Write(string message)
- {
- // nothing
- }
- }
- public abstract class WriterDecorator : Writer
- {
- protected Writer Writer;
- protected WriterDecorator(Writer writer)
- {
- Writer = writer;
- }
- public override void Write(string message)
- {
- Writer.Write(message);
- }
- }
- public class ConsoleLogWriter : WriterDecorator
- {
- public ConsoleLogWriter(Writer writer) : base(writer) { }
- public override void Write(string message)
- {
- base.Write(message);
- Console.WriteLine("ConsoleLogWriter:" + message);
- }
- }
- public class FileLogWriter : WriterDecorator
- {
- public FileLogWriter(Writer writer) : base(writer) { }
- public override void Write(string message)
- {
- base.Write(message);
- Console.WriteLine("FileLogWriter:" + message);
- }
- }
- public class WriterController
- {
- public void Write(Writer writer, string message)
- {
- if (writer != null)
- {
- writer.Write(message);
- }
- else
- {
- Console.Write("No writers");
- }
- }
- }
- class Program
- {
- public static bool UseConsole = true;
- public static bool UseFile = true;
- static void Main(string[] args)
- {
- var writerController = new WriterController();
- var basicWriter = new BasicWriter();
- Writer writer = null;
- if (UseConsole)
- writer = new ConsoleLogWriter(basicWriter);
- if (UseFile)
- writer = new FileLogWriter(writer);
- if (writer != null)
- writerController.Write(writer, "my message");
- Console.ReadKey();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment