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设计模式

  • 相关阅读:
    Java8 lambda表达式语法 1
    Spring WebMVC 4.1返回json时 406(Not Acceptable)
    上传 第三方jar包 nexus
    Nexus 使用配置
    Nexus 安装 使用说明
    mysql 常用命令
    JedisPoolConfig配置
    tomcat 管理端 安全措施
    Java ReentrantLock和synchronized两种锁定机制的对比
    spring 在web容器启动时执行初始化方法
  • 原文地址:https://www.cnblogs.com/363546828/p/3302820.html
Copyright © 2011-2022 走看看