dotSITE
Шаблоны проектирования Work in Murano Software. Вопросы/Ответы
новости материалы решения форумы группы настройки/о проекте

Bridge

Bridge - паттерн, позволяющий отделить интерфейс от реализации и изменять их независимо.

        namespace Bridge_DesignPattern
        {
            using System;

            class Abstraction 
            {
                protected Implementation impToUse;

                public void SetImplementation(Implementation i)
                {
                    impToUse = i;
                }

                virtual public void DumpString(string str)
                {
                    impToUse.DoStringOp(str);                  
                }
            }

            class DerivedAbstraction_One : Abstraction 
            {
                override public void DumpString(string str)
                {
                    str += ".com";
                    impToUse.DoStringOp(str);           
                }       
            }

            class Implementation 
            {
                public virtual void DoStringOp(string str)
                {
                    Console.WriteLine("Standard implementation - print string as is");
                    Console.WriteLine("string = {0}", str);
                }       
            }

            class DerivedImplementation_One : Implementation 
            {
                override public void DoStringOp(string str)
                {
                    Console.WriteLine("DerivedImplementation_One - don't print string");
                }   
            }

            class DerivedImplementation_Two : Implementation 
            {
                override public void DoStringOp(string str)
                {
                    Console.WriteLine("DerivedImplementation_Two - print string twice");
                    Console.WriteLine("string = {0}", str);
                    Console.WriteLine("string = {0}", str);
                }   
            }
            
            public class Client
            {
                Abstraction SetupMyParticularAbstraction() 
                {
                    Abstraction a = new DerivedAbstraction_One();
                    a.SetImplementation(new DerivedImplementation_Two());
                    return a;
                }

                public static int Main(string[] args)
                {       
                    Client c = new Client();
                    Abstraction a = c.SetupMyParticularAbstraction();
                        
                    a.DumpString("Clipcode");

                    return 0;
                }
            }
        }
        

Back
Контакт Реклама на сайте Спонсорам Веб мастерам

Лицензионное соглашение - © 2000-2010 dotSITE
Хостинг .NET предоставлен PARKING.RU
Поддержку сайта осуществляет Murano Software Inc., Offshore software development