设计模式——桥接模式(C#)
2026/6/1 16:43:34 网站建设 项目流程

文章目录

  • 前言
  • 一、消息推送者(抽象+两个实现)
  • 二、前置处理(抽象接口+两个实现)
  • 三、客户端使用代码

前言

桥接模式的主要应用场景在于多种组合,例如汽车有高配、中配、低配,对于每种配置又有红色、黄色等多种颜色。我这里举例是使用微信、钉钉等进行消息推送,消息又有一般消息,紧急的消息等。我们在消息推送前可以做一些前置处理,每种消息类型处理的代码又不一样。
这样组合就很多了:
微信+错误消息
微信+普通消息
钉钉+错误消息
邮件+普通消息

所以就得分开,客户端自行组合

一、消息推送者(抽象+两个实现)

咱们也不知道前置处理是啥,就客户端(调用方)自行决定

publicabstractclassPusher{protectedIPreprocesspreprocess;publicPusher(IPreprocesspreprocess){this.preprocess=preprocess;}publicvoidPush(stringmessage){stringnewMessage=preprocess.Process(message);this.PushHandler(newMessage);}protectedabstractvoidPushHandler(stringmessage);}publicclassWeiChatPusher:Pusher{publicWeiChatPusher(IPreprocesspreprocess):base(preprocess){}protectedoverridevoidPushHandler(stringmessage){Console.WriteLine($"[微信推送消息]:{message}");}}publicclassDingPusher:Pusher{publicDingPusher(IPreprocesspreprocess):base(preprocess){}protectedoverridevoidPushHandler(stringmessage){Console.WriteLine($"[钉钉推送消息]:{message}");}}

二、前置处理(抽象接口+两个实现)

publicinterfaceIPreprocess{stringProcess(stringmessage);}publicclassInfoMessagePreprocess:IPreprocess{publicstringProcess(stringmessage){return"[消息类型INFO]"+message;}}publicclassErrorMessagePreprocess:IPreprocess{publicstringProcess(stringmessage){Console.WriteLine("[通知老板,出大事了]"+message);return"[消息类型ERROR]"+message;}}

三、客户端使用代码

staticvoidMain(string[]args){//微信推送普通消息//IPreprocess preprocess = new InfoMessagePreprocess();//var pusher = new WeiChatPusher(preprocess);//pusher.Push("老王换了个新发型");//钉钉推送严重消息IPreprocesspreprocess=newErrorMessagePreprocess();varpusher=newDingPusher(preprocess);pusher.Push("老刘交女朋友了");Console.ReadKey();}

自己也可以扩展什么后置处理

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询