zoukankan      html  css  js  c++  java
  • 8.桥接模式(Bridge Pattern)

    using System;
    
    namespace ConsoleApplication6
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 创建一个遥控器
                RemoteControl remoteControl = new ConcreteRemote();
    
                // 长虹电视机
                remoteControl.Implementor = new ChangHong();
                remoteControl.On();
                remoteControl.SetChannel();
                remoteControl.Off();
                Console.WriteLine();
    
                // 三星牌电视机
                remoteControl.Implementor = new Samsung();
                remoteControl.On();
                remoteControl.SetChannel();
                remoteControl.Off();
                Console.Read();
            }
        }
    
        /// <summary>
        /// 抽象概念中的遥控器,扮演抽象化角色
        /// </summary>
        public class RemoteControl
        {
            // 字段
            private TV implementor;
    
            // 属性
            public TV Implementor
            {
                get { return implementor; }
                set { implementor = value; }
            }
    
            /// <summary>
            /// 开电视机,这里抽象类中不再提供实现了,而是调用实现类中的实现
            /// </summary>
            public virtual void On()
            {
                implementor.On();
            }
    
            /// <summary>
            /// 关电视机
            /// </summary>
            public virtual void Off()
            {
                implementor.Off();
            }
    
            /// <summary>
            /// 换频道
            /// </summary>
            public virtual void SetChannel()
            {
                implementor.tuneChannel();
            }
        }
    
        /// <summary>
        /// 具体遥控器
        /// </summary>
        public class ConcreteRemote : RemoteControl
        {
            public override void SetChannel()
            {
                Console.WriteLine("---------------------");
                base.SetChannel();
                Console.WriteLine("---------------------");
            }
        }
    
        /// <summary>
        /// 电视机,提供抽象方法
        /// </summary>
        public abstract class TV
        {
            public abstract void On();
            public abstract void Off();
            public abstract void tuneChannel();
        }
    
        /// <summary>
        /// 长虹牌电视机,重写基类的抽象方法
        /// 提供具体的实现
        /// </summary>
        public class ChangHong : TV
        {
            public override void On()
            {
                Console.WriteLine("长虹牌电视机已经打开了");
            }
    
            public override void Off()
            {
                Console.WriteLine("长虹牌电视机已经关掉了");
            }
    
            public override void tuneChannel()
            {
                Console.WriteLine("长虹牌电视机换频道");
            }
        }
    
        /// <summary>
        /// 三星牌电视机,重写基类的抽象方法
        /// </summary>
        public class Samsung : TV
        {
            public override void On()
            {
                Console.WriteLine("三星牌电视机已经打开了");
            }
    
            public override void Off()
            {
                Console.WriteLine("三星牌电视机已经关掉了");
            }
    
            public override void tuneChannel()
            {
                Console.WriteLine("三星牌电视机换频道");
            }
        }
    }
  • 相关阅读:
    DelphiXE下的字符串变化
    FastMM配置文件详解
    [转] FastMM、FastCode、FastMove的使用
    FastMM 定位内存泄露的代码位置
    转 Delphi中使用FastMM4结合View CPU避免内存泄漏
    [转] FastMM使用详解
    salesforce 零基础开发入门学习(九)Approval Process 介绍
    salesforce 零基础开发入门学习(八)数据分页简单制作
    salesforce 零基础开发入门学习(七)PickList的value值获取
    salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建
  • 原文地址:https://www.cnblogs.com/lgxlsm/p/4638915.html
Copyright © 2011-2022 走看看