首页 > 其他分享 >Bridge Pattern-桥接模式

Bridge Pattern-桥接模式

时间:2023-08-16 14:35:20浏览次数:38  
标签:Bridge messageSender Sending 桥接 Pattern message Message public

C#桥接模式(Bridge Pattern)是一种结构型设计模式,用于将抽象部分与其具体实现部分独立开来,使它们可以独立变化。

桥接模式的核心思想是在抽象部分和实现部分之间建立一个桥接(Bridge)对象,通过该桥接对象将抽象部分和实现部分连接起来。这样抽象部分和实现部分可以独立进行扩展和变化,而不会相互影响。

桥接模式通常涉及以下几个角色:

抽象部分(Abstraction):定义抽象部分的接口,并维护对实现部分对象的引用。

具体抽象部分(Concrete Abstraction):实现抽象部分的接口,并调用实现部分的方法。它通常是抽象部分的子类。

实现部分(Implementor):定义实现部分的接口,提供基本的操作方法。

具体实现部分(Concrete Implementor):实现实现部分的接口,提供具体的操作方法。它通常是实现部分的子类。

namespace BridgePattern_桥接模式
{/// <summary>
/// 定义消息发送接口
/// </summary>
    public interface IMessageSender
    {
        void SendMessage(string message);
    }
}
namespace BridgePattern_桥接模式
{/// <summary>
/// 邮件发送消息
/// </summary>
    public class Email : IMessageSender
    {
        public void SendMessage(string message)
        {
            Console.WriteLine("Sending Email: " + message);
        }
    }
}
namespace BridgePattern_桥接模式
{/// <summary>
/// 短信发送消息
/// </summary>
    public class SMS : IMessageSender
    {
        public void SendMessage(string message)
        {
            Console.WriteLine("Sending SMS: " + message);
        }
    }
}
namespace BridgePattern_桥接模式
{/// <summary>
/// 消息类型接口
/// </summary>
    public abstract class Message
    {
        protected IMessageSender messageSender;
        public Message (IMessageSender messageSender)
        {
            this.messageSender = messageSender;
        }
        public abstract void Send();
    }
}
namespace BridgePattern_桥接模式
{/// <summary>
/// 文本消息
/// </summary>
    public class TextMessage : Message
    {
        public TextMessage(IMessageSender messageSender):base(messageSender) { }
        public override void Send()
        {
            Console.WriteLine("Sending Text Message...");
            messageSender.SendMessage("This is a text message");
        }
    }
}
namespace BridgePattern_桥接模式
{/// <summary>
/// 图片消息
/// </summary>
    public class ImageMessage : Message
    {
        public ImageMessage(IMessageSender messageSender):base(messageSender) { }
        public override void Send()
        {
            Console.WriteLine("Sending Image Message...");
            messageSender.SendMessage("This is an image message");
        }
    }
}
namespace BridgePattern_桥接模式
{
    internal class Program
    {
        static void Main(string[] args)
        {
            IMessageSender messageSender1 = new Email();
            IMessageSender messageSender2 = new SMS();

            Message textMessage1 = new TextMessage(messageSender1);
            textMessage1.Send();
            Message textMessage2 = new TextMessage(messageSender2);
            textMessage2.Send();

            Message imageMessage1 = new ImageMessage(messageSender1);
            imageMessage1.Send();
            Message imageMessage2 = new ImageMessage(messageSender2);
            imageMessage2.Send();

            Console.Read();
            //消息打印
            //Sending Text Message...
            //Sending Email: This is a text message
            //Sending Text Message...
            //Sending SMS: This is a text message
            //Sending Image Message...
            //Sending Email: This is an image message
            //Sending Image Message...
            //Sending SMS: This is an image message
        }
    }
}

桥接模式的优点是能够将抽象部分和实现部分独立变化,使得它们可以独立扩展。同时,桥接模式也能降低抽象部分和实现部分之间的耦合度。但它也增加了系统的复杂性,因为需要定义抽象部分和实现部分的接口以及它们之间的桥接对象。因此,在使用桥接模式时需要谨慎考虑,并权衡利弊。

标签:Bridge,messageSender,Sending,桥接,Pattern,message,Message,public
From: https://www.cnblogs.com/ZHIZRL/p/17633933.html

相关文章

  • VMware虚拟机桥接模式不能联网访问外网,NAT可以联网但本机不能访问虚拟机ping不通
    如果其他方法没有用可以试试这个方法问题NAT模式可以访问外网,但本地不能访问虚拟机桥接模式本地可以访问虚拟机,但虚拟机不能访问外网,不能联网解决管理>虚拟机设置>网络适配器>自定义>VMnet8(NAT模式)......
  • AdapterPattern-适配器模式
    C#适配器模式(AdapterPattern)是一种结构型设计模式,用于将一个类的接口转换成客户端所期望的另一个接口。适配器模式的核心思想是通过一个适配器类,将原本不兼容的接口转换成兼容的接口,使得客户端能够使用这些接口进行交互,而不需要修改原有的类或接口。适配器模式通常涉及以下几个......
  • Br软件全版本下载Bridge中文版下载 安装激活步骤
    AdobeBridge几乎是所有摄影爱好者和专业摄影师的首选工具。Bridge是AdobePhotoshopCC图像处理软件系列中的一个独立的组件。Bridge的原意是桥、桥梁,设计理念可能就是寓意功能强大,能够成为设计师、摄影师与PS图像处理软件系列间的一座桥梁。软件地址:看置顶贴AdobeBridge2021官......
  • inclusive design patterns All In One
    inclusivedesignpatternsAllInOne包容性设计模式TableOfContentsIntroduction08TheDocument20AParagraph46ABlogPost70EvaluationByPattern108NavigationRegions124AMenuButton154InclusivePrototyping180AListOfProducts190AFil......
  • 13 桥接模式 -- go语言设计模式
    桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(HandleandBody)模式或接口(interface)模式。桥接模式的实现代码packagemainimport"fmt"//发送信息的具体实现(操作)typeMessageImplementerinterface{ send(test,......
  • VM虚拟机三种网络配置详解(桥接、NAT、仅主机)
    VM虚拟机三种网络配置详解(桥接、NAT、仅主机)链接在学习网络配置之前,需要搞明白有关于网络的一些基本概念,什么是ip,子网掩码,网段,网关?这里只做最简单的解释,实际上远远不止这些。网络名词ip在现实生活中,这么大的一个中国,物流怎么能清楚的找到需要配送的终点,靠的就是地址。在互......
  • docker网络 bridge 与overlay 模式
    转载请注明出处:1.bridge网络模式工作原理: 在Bridge模式中,Docker通过创建一个虚拟网络桥接器(bridge)将容器连接到主机上的物理网络接口。每个容器都会被分配一个IP地址,使得它们可以相互通信,并且可以与主机进行通信。Docker的Bridge网络模式是默认的网络配置选项,它提供了容......
  • Ubuntu创建桥接网络
    我这才用的是Ubuntu的netplan网络管理,当然也可以采用systemd-network网络管理。未测试通过,所以下操作均建立在netplan管理方式上。设置桥接安装bridge-utilsaptinstallbridge-utils-y创建名为br0桥接虚拟网卡brctladdbrbr0设置桥接#查看一下宿主机网卡名,网卡名为:enp3s0f......
  • 河南移动H2-3v获取超级密码修改桥接教程
    普通账号登录光猫后台(光猫背面密码) 登录成功后,在网络里面查看当前连接的VLANID值并记录下来,然后直接在浏览器输入:http://192.168.1.1/getpage.gch?pid=1002&nextpage=tele_sec_tserver_t.gch 点击启用Telnet并确定保存 右键密码框点击审查元素 把元素的type="passwo......
  • PrototypePattern-原型模式
    在C#中,原型模式(PrototypePattern)是一种创建型设计模式,它允许通过克隆现有对象来创建新对象,而无需依赖于显式的构造函数。原型模式通过复制现有对象的属性和状态,创建一个新对象,并在需要创建对象时返回这个克隆的副本。原型模式的核心是使用原型接口或基类来定义克隆方法,并让具体......