• 桥接模式 -- 大话设计模式


    在今天,读书有时是件“麻烦”事。它需要你付出时间,付出精力,还要付出一份心境。--仅以《大话设计模式》来祭奠那逝去的……

    桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立的变化。一个类存在两个独立变化的维度,而且两个维度都需要进行扩展的时候,可以使用桥接模式

    1.不同品牌手机要安装不同的手机软件(注意:高层要引用底层,三层架构中就运用了桥接模式,BLL层中通过桥接模式与DAL解耦,其实现方式就是BLL层中添加了DAL层的引用,这样数据库底层的改变就不会影响客户端的实现了)

      定义手机软件(底层)抽象类和具体软件类

        /// <summary>
        /// 手机软件
        /// </summary>
        public abstract class HandsetSoft
        {
            public abstract void Run();
        }
    
        /// <summary>
        /// 手机游戏
        /// </summary>
        public class HandsetGame : HandsetSoft
        {
            public override void Run()
            {
                Console.WriteLine("运行手机游戏");
            }
        }
    
        /// <summary>
        /// 手机通讯录
        /// </summary>
        public class HandsetAddressList : HandsetSoft
        {
            public override void Run()
            {
                Console.WriteLine("运行手机通讯录");
            }
        }
    

       定义手机品牌(高层)抽象类和具体品牌类

        /// <summary>
        /// 手机品牌
        /// </summary>
        public abstract class HandsetBrand
        {
            protected HandsetSoft soft;
    
            /// <summary>
            /// 品牌需要关注软件,所以可在机子中安装软件
            /// </summary>
            public void SetHandsetSoft(HandsetSoft soft)
            {
                this.soft = soft;
            }
    
            public abstract void Run();
        }
    
        /// <summary>
        /// 手机品牌M
        /// </summary>
        public class HandsetBrandM : HandsetBrand
        {
            public override void Run()
            {
                this.soft.Run();
            }
        }
    
        /// <summary>
        /// 手机品牌N
        /// </summary>
        public class HandsetBrandN : HandsetBrand
        {
            public override void Run()
            {
                this.soft.Run();
            }
        }
    

       开启场景模拟

            static void Main(string[] args)
            {
                HandsetBrand ab = new HandsetBrandM();
    
                ab.SetHandsetSoft(new HandsetGame());
                ab.Run();
    
                ab.SetHandsetSoft(new HandsetAddressList());
                ab.Run();
            }
    
  • 相关阅读:
    Linux下文件属性(drwxr-xr-x)详解以及(-rwxrwxrwx=777)(转)
    Linux中chown和chmod的区别和用法(转)
    以root用户身份在jenkins中运行shell命令
    Java中Properties配置文件读取
    Java分布式服务框架Dubbo初探(待实践)
    Servlet3.0新特性
    Java中System.getProperty()的参数
    Java获取路径的方法分析详解(Application/Web)
    Java中的JAR/EAR/WAR包的文件夹结构说明(转)
    JAR包中的MANIFEST.MF文件详解以及编写规范
  • 原文地址:https://www.cnblogs.com/amywechat/p/4936219.html
Copyright © 2020-2023  润新知