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();
            }
        }
    

    结果:

  • 相关阅读:
    python模块安装路径
    yum软件搜索
    项目里用到的python知识点
    python调用C函数
    opencv VideoCapture使用示例
    Django模型层之多表操作
    博客园 装饰
    mysql条件查询-排除null ---oracle、mysql 区分总结
    Android——Fragment详解
    Android——监听事件总结
  • 原文地址:https://www.cnblogs.com/YourDirection/p/14072879.html
Copyright © 2011-2022 走看看