日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式——桥模式

發布時間:2024/7/19 asp.net 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式——桥模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1.“單一職責”模式
  • 2.動機(Motivation)
  • 3.模式定義
  • 4.要點總結
  • 5.代碼對比

1.“單一職責”模式

在軟件組件的設計中,如果責任劃分的不清晰,使用繼承得到的 結果往往是隨著需求的變化,子類急劇膨脹,同時充斥著重復代碼, 這時候的關鍵是劃清責任。 典型模式 ? Decorator ? Bridge

2.動機(Motivation)

由于某些類型的固有的實現邏輯,使得它們具有兩個變化的維度,乃至多個緯度的變化。如何應對這種“多維度的變化”?如何利用面向對象技術來使得類型可以輕松地沿著兩個乃至多個方向變化, 而不引入額外的復雜度?

3.模式定義

將抽象部分(業務功能)與實現部分(平臺實現)分離,使它們都可以獨立地變化。

4.要點總結

Bridge模式使用“對象間的組合關系”解耦了抽象和實現之間固有的綁定關系, 使得抽象和實現可以沿著各自的維度來變化。 所謂抽象和實現沿著各自緯度的變化,即“子類化”它們。Bridge模式有時候類似于多繼承方案,但是多繼承方案往往違背 單一職責原則(即一個類只有一個變化的原因), 復用性比較差。Bridge模式是比多繼承方案更好的解決方法。Bridge模式的應用一般在“兩個非常強的變化維度”,有時一個 類也有多于兩個的變化維度, 這時可以使用Bridge的擴展模式。

5.代碼對比

不好的版本: class Messager{ public:virtual void Login(string username, string password)=0;virtual void SendMessage(string message)=0;virtual void SendPicture(Image image)=0;virtual void PlaySound()=0;virtual void DrawShape()=0;virtual void WriteText()=0;virtual void Connect()=0;virtual ~Messager(){} };//平臺實現class PCMessagerBase : public Messager{ public:virtual void PlaySound(){//**********}virtual void DrawShape(){//**********}virtual void WriteText(){//**********}virtual void Connect(){//**********} };class MobileMessagerBase : public Messager{ public:virtual void PlaySound(){//==========}virtual void DrawShape(){//==========}virtual void WriteText(){//==========}virtual void Connect(){//==========} };//業務抽象class PCMessagerLite : public PCMessagerBase { public:virtual void Login(string username, string password){PCMessagerBase::Connect();//........}virtual void SendMessage(string message){PCMessagerBase::WriteText();//........}virtual void SendPicture(Image image){PCMessagerBase::DrawShape();//........} };class PCMessagerPerfect : public PCMessagerBase { public:virtual void Login(string username, string password){PCMessagerBase::PlaySound();//********PCMessagerBase::Connect();//........}virtual void SendMessage(string message){PCMessagerBase::PlaySound();//********PCMessagerBase::WriteText();//........}virtual void SendPicture(Image image){PCMessagerBase::PlaySound();//********PCMessagerBase::DrawShape();//........} };class MobileMessagerLite : public MobileMessagerBase { public:virtual void Login(string username, string password){MobileMessagerBase::Connect();//........}virtual void SendMessage(string message){MobileMessagerBase::WriteText();//........}virtual void SendPicture(Image image){MobileMessagerBase::DrawShape();//........} };class MobileMessagerPerfect : public MobileMessagerBase { public:virtual void Login(string username, string password){MobileMessagerBase::PlaySound();//********MobileMessagerBase::Connect();//........}virtual void SendMessage(string message){MobileMessagerBase::PlaySound();//********MobileMessagerBase::WriteText();//........}virtual void SendPicture(Image image){MobileMessagerBase::PlaySound();//********MobileMessagerBase::DrawShape();//........} };void Process(){//編譯時裝配Messager *m =new MobileMessagerPerfect(); }

好的版本:

class Messager{ protected:MessagerImp* messagerImp;//... public:virtual void Login(string username, string password)=0;virtual void SendMessage(string message)=0;virtual void SendPicture(Image image)=0;virtual ~Messager(){} };class MessagerImp{ public:virtual void PlaySound()=0;virtual void DrawShape()=0;virtual void WriteText()=0;virtual void Connect()=0;virtual MessagerImp(){} };//平臺實現 n class PCMessagerImp : public MessagerImp{ public:virtual void PlaySound(){//**********}virtual void DrawShape(){//**********}virtual void WriteText(){//**********}virtual void Connect(){//**********} };class MobileMessagerImp : public MessagerImp{ public:virtual void PlaySound(){//==========}virtual void DrawShape(){//==========}virtual void WriteText(){//==========}virtual void Connect(){//==========} };//業務抽象 m//類的數目:1+n+mclass MessagerLite :public Messager {public:virtual void Login(string username, string password){messagerImp->Connect();//........}virtual void SendMessage(string message){messagerImp->WriteText();//........}virtual void SendPicture(Image image){messagerImp->DrawShape();//........} };class MessagerPerfect :public Messager {public:virtual void Login(string username, string password){messagerImp->PlaySound();//********messagerImp->Connect();//........}virtual void SendMessage(string message){messagerImp->PlaySound();//********messagerImp->WriteText();//........}virtual void SendPicture(Image image){messagerImp->PlaySound();//********messagerImp->DrawShape();//........} };void Process(){//運行時裝配MessagerImp* mImp=new PCMessagerImp();Messager *m =new Messager(mImp); }

總結

以上是生活随笔為你收集整理的设计模式——桥模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产性生活网站 | 久久久久国产精品区片区无码 | 成人午夜在线观看视频 | 成人性生交大片免费看 | 草逼网站 | 日剧网 | 国产三级理论 | 国产a级黄色 | 日本人妻一区 | 一炮成瘾1v1高h | 大学生av| 97狠狠| 中文字幕五码 | 国产精品一区二区三区免费看 | 日韩在线免费看 | 亚州视频在线 | 亚洲国产黄| 亚洲成人午夜在线 | 欧美第一页在线观看 | 国产性猛交xx乱 | 无码人妻h动漫 | 精品人妻人人做人人爽夜夜爽 | 91精品婷婷国产综合久久蝌蚪 | 青青草免费公开视频 | 麻豆tv在线观看 | xxxx国产| 老汉av网站 | 黄色片在线观看视频 | 欧美三级电影在线观看 | 国产精品51 | 在线视频观看一区二区 | 日本一级淫片1000部 | 亚洲av日韩av高潮潮喷无码 | 北条麻妃久久 | 国产一区二区三区18 | china国模大尺度pics | 男人天堂2020| 欧美视频在线观看一区二区三区 | 日本一区二区三区成人 | 99视频网| 欧美日韩亚洲免费 | 亚洲av无码一区二区乱子伦 | 免费国产视频 | 69xxx免费视频| 欧美亚洲国产一区 | 中文字幕亚洲欧美日韩在线不卡 | 伊人久久99 | 亚洲日本成人在线观看 | 熟女丰满老熟女熟妇 | 乌克兰av在线 | 午夜剧场成人 | 91久久久久久久久久久久 | 五月精品 | 成人午夜影视 | www.黄色国产 | 成人午夜一区二区 | 永久久久久久 | 精品成人免费视频 | 蜜臀av一区二区三区 | 久久免费视频一区 | 91插插影库| 亚洲精品乱码久久久久久日本蜜臀 | 97超碰网| 国产良妇出轨视频在线观看 | 天天色影 | 色香蕉av | 免费看特级毛片 | 久久久亚洲av波多野结衣 | 日日骚视频 | 国产麻豆xxxvideo实拍 | 中国女人特级毛片 | 人人做人人爽人人爱 | 亚洲成人一区二区三区 | 日韩视频国产 | 精品一区国产 | a少妇| 大桥未久av在线播放 | 亚洲精品一级片 | 九九三级 | 国产不卡在线 | 无套内谢的新婚少妇国语播放 | 欧美一区视频在线 | 久久综合操| 日日麻批 | 美女在线免费视频 | 午夜草逼| 一区三区在线观看 | 99热最新在线 | 免费色网站 | 日韩免费一区二区 | 久精品视频 | 亚洲激情电影在线 | 亚洲性图av | 精品国产一二三四区 | 精品人妻一区二区三区四区五区 | 99热首页 | 久久精品欧美一区二区三区不卡 | 精品久久久久久久久久久久久久久久久久 | 精品福利三区3d卡通动漫 |