zoukankan      html  css  js  c++  java
  • 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设计模式

  • 相关阅读:
    Eclipse中创建标准web工程以及标准目录结构说明
    log4j配置说明
    常用的Eclilpse插件列表以及安装方式总结
    Eclipse插件安装总结
    eclipse中加放js文件报js语法错误解决办法
    如何在Eclipse中配置Tomcat服务器
    webpack的单vue组件(.vue)加载sass配置
    总结自己常用的几种居中方式
    两个正则坑
    CSS拾遗(二)
  • 原文地址:https://www.cnblogs.com/363546828/p/3302820.html
Copyright © 2011-2022 走看看