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

    结果:

  • 相关阅读:
    PHP基础笔记之一
    乱码问题
    PHP函数
    取色工具ColorPix
    框架
    区别和详解:jQuery中的 $().each()和$.each()/jQuery.each()
    区别和详解:jQuery extend()和jQuery.fn.extend()
    H5基于iScroll实现下拉刷新,上拉加载更多....
    重要选择器querySelector和querySelectorAll
    微信对话框小三角形实现
  • 原文地址:https://www.cnblogs.com/YourDirection/p/14072879.html
Copyright © 2011-2022 走看看