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

    结果:

  • 相关阅读:
    ChromeDriver下载
    LR基础理论详解
    python中assert详解
    python定义类()中写object和不写的区别
    python list初始化技巧
    python list中append()方法和extend()方法区别
    python生成器(generator)、迭代器(iterator)、可迭代对象(iterable)区别
    使用__slots__节省python内存技巧
    lambda表达式详解
    python处理数据问题详解
  • 原文地址:https://www.cnblogs.com/YourDirection/p/14072879.html
Copyright © 2020-2023  润新知