Bridge Design Pattern

Anwendung findet dieses Pattern, wenn die Klasse an sich in der Abstraktion als auch in der Implementierung erweiterbar sein soll.

 


Die Implementierung bleibt verborgen, da diese in der zugrunde liegenden Klasse implementiert ist.
Als Beispiel habe ich mir eine Klasse zum Loggen für ein FileLog und Eventlog angelegt, welches über das Bridge Pattern angesprochen werden soll.

Die Bridgeklasse

namespace BridgePattern
{
    class LogmanagerBridge
    {
        public void WriteInfo(Logmanager.ILog obj)
        {
            obj.Info();
        }

        public void WriteError(Logmanager.ILog obj)
        {
            obj.Error();
        }
    }
}

Die Logklasse

using System;

namespace BridgePattern
{
    class Logmanager
    {
        public interface ILog
        {
            void Info();
            void Error();
            void Warning();
        }

       public class FileLogWriter : ILog
        {
            public void Info()
            {
                Console.WriteLine("Rreached Info A");
            }

            public void Error()
            {
                Console.WriteLine("Rreached Error A");
            }

            public void Warning()
            {
                Console.WriteLine("Rreached Warning A");
            }
        }

       public class EventLogWriter : ILog
        {
            public void Info()
            {
                Console.WriteLine("Rreached Info B");
            }
            public void Error()
            {
                Console.WriteLine("Rreached Error A");
            }
            public void Warning()
            {
                Console.WriteLine("Rreached Warning A");
            }
        }

    }
}

Der Programmaufruf

using System;

namespace BridgePattern
{
    class Program
    {
        static void Main(string[] args)
        {
            var br = new LogmanagerBridge();
            var a = new Logmanager.FileLogWriter();
            var b = new Logmanager.EventLogWriter();
            br.WriteInfo(a);//Info to FileLogWriter
            br.WriteError(a); //Error to FileLogWriter
            br.WriteInfo(b); //Info to EventLogWriter
            br.WriteError(b); //Error to FileLogWriter

            Console.ReadLine();

        }

    }

}

Und so sieht es aus:

Kommentare sind geschlossen