brige设计模式

///brige设计模式
///解决层次之间的依赖关系
namespace C
{
    public abstract class AddressBook
    {
        public abstract void Add();
        public abstract void Find();
        public abstract void Delete();
    }

    /// <summary>
    /// 品牌M的通讯录
    /// </summary>
    public class AddressBookM:AddressBook
    {

        public override void Add()
        {
            throw new NotImplementedException();
        }

        public override void Find()
        {
            throw new NotImplementedException();
        }

        public override void Delete()
        {
            throw new NotImplementedException();
        }
    }

    class Game
    {
        public virtual void Run()
        {
        }
    }

    /// <summary>
    /// 当频繁给类增加新功能,应该使用类的聚合和组合
    /// </summary>
    class Phone
    {
        #region Error

        //组合一个通讯录功能。
        AddressBook book;

        ///****错误概念******
        ///根据开发闭合原则,增加新功能的时候,增加对另一个对象的引用。?
        ///增加一种游戏  
        ///****错误概念******
         Game game;

         public void AddBook()
         {
             book.Add();
         }

         public void GameRun()
         {
             game.Run();
         }

        #endregion

         ///*************正确概念**************
        ///开发闭合原则是:对已经存在的类修改是不允许的,  对增加新功能是允许
        ///因为把手机的功能抽象成一个类
        ///*************正确概念*************
         PhoneSoft phoneSoft;

         public void RunFunction()
         {
             phoneSoft.Run();
         }

        /// <summary>
        /// 设置成不同的手机软件,如通讯录、游戏等
        /// </summary>
        /// <param name="ps"></param>
         public void SetPhoneSoft(PhoneSoft ps)
         {
             this.phoneSoft = ps;
         }
    }

    /// <summary>
    /// 把变化的手机功能,抽象成一个类
    /// </summary>
    class PhoneSoft
    {
        public virtual void Run()
        {

        }
    }

    class PhoneGame:PhoneSoft
    {
        public override void Run()
        {
            base.Run();
            Console.WriteLine("This is game runnning");
        }
    }

    class TestBrige
    {
        public static void Run()
        {
            Phone p = new Phone();
            p.SetPhoneSoft(new PhoneGame());
            p.RunFunction();
        }
    }
}

 

brige设计模式

posted @ 2013-09-05 10:58  viola  阅读(295)  评论(0编辑  收藏  举报