zoukankan      html  css  js  c++  java
  • 设计模式C#实现(十)——桥接模式

     

     

    意图

    将抽象部分与它的实现部分分离,使它们都可以独立的变化。

    适用性

    1.不希望抽象和实现间有固定的绑定关系
    2.类的抽象以及它的实现都可以通过生成子类的方法加以扩充
    3.对抽象的实现部分的修改应对客户端不参产生影响
    4.在多个对象中共享实现

    结构

    Bridge

    实现

    (这里所说的抽象层次和实现层次和面向对象的抽象和实现不同?把遥控器当作抽象,电视机当作实现是因为遥控器本身不会开关,只是命令电视机开关?这里抽象层次和实现层次的关系是聚合呀)
    遥控器

    public class RemoteControl
        {
            public TV tv;
            public void On()
            {
                tv.On();
            }
            public void Off()
            {
                tv.Off();
            }
        }
    

    电视

    public interface TV
        {
            void On();
            void Off();
        }
    

    具体的电视

        public class Sony:TV
        {
            public void On()
            {
                Console.WriteLine("SonyTV On.");
            }
    
            public void Off()
            {
                Console.WriteLine("SonyTV off");
            }
        }
    

    具体的遥控器
    可扩展

     public class ConcreteRemote:RemoteControl
        {
    
            public ConcreteRemote(TV tv)
            {
                this.tv = tv;
            }
            public void AutoOff(int ms)
            {
                Thread.Sleep(ms);
                tv.Off();
            }
        }
    

    客户

     class Program
        {
            static void Main(string[] args)
            {
                TV sony = new  Sony();
                ConcreteRemote cr = new ConcreteRemote(sony);
                cr.On();
                cr.AutoOff(5000);
                Console.ReadKey();
            }
        }
    

    运行结果
    运行结果

    效果

    1.分离接口及其实现部分
    2.提高可扩充性
    3.实现细节对客户透明

  • 相关阅读:
    mount命令详解
    traceroute命令详解
    etcd节点扩容至两个节点
    shell历史命令
    etcd单节点安装
    linux中修改环境变量及生效方法
    ansible最佳实战部署nginx
    用roles部署nginx
    playbook部署mangodb
    安装mangodb
  • 原文地址:https://www.cnblogs.com/castdream/p/4985588.html
Copyright © 2011-2022 走看看