设计模式——桥接模式(C#)
文章目录前言一、消息推送者抽象两个实现二、前置处理抽象接口两个实现三、客户端使用代码前言桥接模式的主要应用场景在于多种组合例如汽车有高配、中配、低配对于每种配置又有红色、黄色等多种颜色。我这里举例是使用微信、钉钉等进行消息推送消息又有一般消息紧急的消息等。我们在消息推送前可以做一些前置处理每种消息类型处理的代码又不一样。这样组合就很多了微信错误消息微信普通消息钉钉错误消息邮件普通消息…所以就得分开客户端自行组合一、消息推送者抽象两个实现咱们也不知道前置处理是啥就客户端调用方自行决定publicabstractclassPusher{protectedIPreprocesspreprocess;publicPusher(IPreprocesspreprocess){this.preprocesspreprocess;}publicvoidPush(stringmessage){stringnewMessagepreprocess.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(老王换了个新发型);//钉钉推送严重消息IPreprocesspreprocessnewErrorMessagePreprocess();varpushernewDingPusher(preprocess);pusher.Push(老刘交女朋友了);Console.ReadKey();}自己也可以扩展什么后置处理