设计模式之-桥接模式

桥接模式定义:将抽象部分与它的实现部分分离,使他们都可以独立的变化。主要运用的是“合成/聚合复用原则”。

使用合成/复用原则的好处:有助于你保持每个类被装转,并被集中在当个任务上,这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物

 

 

abstract class HandsetSoft
    {
        public abstract void Run();
    }
    class HandsetGame: HandsetSoft
    {
        public override void Run()
        {
            Console.WriteLine("运行手机软件");
        }
    }
    class HandsetAddressList:HandsetSoft
    {
        public override void Run()
        {
            Console.WriteLine("运行手机通讯录");
        }
    }
    abstract class HandsetBrand
    {
        protected HandsetSoft soft;//保护成员,该类内部和继承类中可以访问。
        public void SetHandsetSoft(HandsetSoft soft)
        {
            this.soft = soft;
        }
        public abstract void Run();
    }
    class HandsetBrandN:HandsetBrand
    {
        public override void Run()
        {
            soft.Run();
        }
    }
    class HandsetBrandM : HandsetBrand
    {
        public override void Run()
        {
            soft.Run();
        }
    }
View Code

客户端

        static void Main(string[] args)
        {           
            HandsetBrand ab;
            ab = new HandsetBrandN();
            ab.SetHandsetSoft(new HandsetGame());
            ab.Run();

            ab.SetHandsetSoft(new HandsetAddressList());
            ab.Run();

            ab = new HandsetBrandM();
            ab.SetHandsetSoft(new HandsetGame());
            ab.Run();

            ab.SetHandsetSoft(new HandsetAddressList());
            ab.Run();
            Console.ReadKey();
        }
View Code

根据合成/聚合复用原则,如果要增加一个功能,那么只需要增加这个类就好了。这样的设计很好符合了开发封闭原则。

为什么不使用继承:

继承是一种强耦合的结构,父类变,子类就会变,所有在使用继承时,一定要在是“is-a”的关系再考虑使用。

 

posted @ 2021-09-04 10:57  HelloWorld庄先生  阅读(24)  评论(0编辑  收藏  举报