zoukankan      html  css  js  c++  java
  • C# 设计模式(8)桥接模式

    桥接模式

    1.解决多维度问题

    2.变化封装

    代码实现:

    组合 变化封装类  减少子类的数量

    手机系统桥接

    namespace BridgePattern.Bridge
    {
        public interface ISystem
        {
            public string GetSystem();
            public string GetVersion();
        }
        class IOS:ISystem
        {
            public string GetSystem()
            {
                return "IOS";
            }
    
            public string GetVersion()
            {
                return "14.1";
            }
        }
        public class SmartisanOS:ISystem
        {
            public string GetSystem()
            {
                return "Smartisan_OS";
            }
    
            public string GetVersion()
            {
                return "7.0";
            }
        }
    }
    

    手机品牌:

    namespace BridgePattern
    {
        public abstract class BasePhone
        {
            public ISystem PhoneSystem;
            public abstract void UseCall();
            public abstract void UseText();
        }
        public class Iphone:BasePhone
        {
            public override void UseCall()
            {
                Console.WriteLine($"Use {this.GetType().Name} {this.PhoneSystem.GetSystem()} {this.PhoneSystem.GetVersion()} Call Somebody");
            }
    
            public override void UseText()
            {
                Console.WriteLine($"Use {this.GetType().Name} {this.PhoneSystem.GetSystem()} {this.PhoneSystem.GetVersion()} Send Text to Somebody");
            }
        }
        public class Smartisan:BasePhone
        {
            public override void UseCall()
            {
                Console.WriteLine($"Use {this.GetType().Name} {this.PhoneSystem.GetSystem()} {this.PhoneSystem.GetVersion()} Call Somebody");
            }
    
            public override void UseText()
            {
                Console.WriteLine($"Use {this.GetType().Name} {this.PhoneSystem.GetSystem()} {this.PhoneSystem.GetVersion()} Send Text to Somebody");
            }
        }
    }
    

    代码调用:

        class Program
        {
            static void Main(string[] args)
            {
                ISystem iOS = new IOS();
                ISystem smartisanOS = new SmartisanOS();
    
    
                BasePhone iPhone = new Iphone();
                iPhone.PhoneSystem = iOS;
                iPhone.UseCall();
                iPhone.UseText();
    
                BasePhone smartisan = new Smartisan();
                smartisan.PhoneSystem = smartisanOS;
                smartisan.UseCall();
                smartisan.UseText();
    
    
                BasePhone iPhoneSmartisanOS = new Iphone();
                iPhoneSmartisanOS.PhoneSystem = smartisanOS;
                iPhoneSmartisanOS.UseCall();
                iPhoneSmartisanOS.UseText();
    
                BasePhone smartisanIOS = new Smartisan();
                smartisanIOS.PhoneSystem = iOS;
                smartisanIOS.UseCall();
                smartisanIOS.UseText();
            }
        }
    

    结果:

  • 相关阅读:
    再谈spark部署搭建和企业级项目接轨的入门经验(博主推荐)
    CSS基础3——使用CSS格式化元素内容的字体
    利用MySQL 的GROUP_CONCAT函数实现聚合乘法
    POJ Octal Fractions(JAVA水过)
    组件接口(API)设计指南-文件夹
    Nginx 因 Selinux 服务导致无法远程訪问
    host字段变复杂了
    hdu 1251 统计难题 初识map
    “那个人样子好怪。”“我也看到了,他好像一条狗。”
    pomelo 协议
  • 原文地址:https://www.cnblogs.com/YourDirection/p/14072879.html
Copyright © 2011-2022 走看看