一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - .NET橋接模式講解

.NET橋接模式講解

2020-04-06 12:06Yangyi.He ASP.NET教程

這篇文章主要為大家詳細介紹了ASP.NET橋接模式的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

橋接模式的定義:

將抽象化(Abstraction)與實現化(Implementation)脫耦,使得二者可以獨立地變化。

橋接模式結構圖:

.NET橋接模式講解

橋接模式中得角色:

抽象化(Abstraction)角色:抽象化給出的定義,并保存一個對實現化對象的引用。
修正抽象化(Refined Abstraction)角色:擴展抽象化角色,改變和修正父類對抽象化的定義。
實現化(Implementor)角色:這個角色給出實現化角色的接口,但不給出具體的實現。必須指出的是,這個接口不一定和抽象化角色的接口定義相同, 實際上,這兩個接口可以非常不一樣。實現化角色應當只給出底層操作,而抽象化角色應當只給出基于底層操作的更高一層的操作。

結合實例說明:

引用一個電視遙控器的例子,對于每一個牌子的遙控器,都有相呼應的遙控器來控制,這時候我們想到的設可能是:抽象一個遙控器接口,里面有待實現的開機,關機,換頻道這樣一組功能方法。然后創建具體的遙控器類去繼承這個接口,實現里面的方法。這樣可以滿足每個電視機都實現了自己的遙控器,對于新增了其他類型的 電視機,只需要添加一個派生類就可以滿足新的遙控器的派生。但是哪一天,用戶要求在遙控中加入一個返回上一個頻道的功能時候,就需要改變抽象出來的遙控器 接口,需要向抽象類中添加一個新的方法,這樣就改變了抽象類的實現。如果用戶要求同時改變電視機的產品行為,和遙控器的行為方法,對于上面的設計會造成很 大的改動。使用橋接模式可以很好的解決這些問題。

使用:

1.首先抽象出電視機,提供遙控器改變的行為方法。

?
1
2
3
4
5
6
7
8
9
/// <summary>
/// 電視機,提供抽象方法
/// </summary>
public abstract class TV
{
 public abstract void On();
 public abstract void Off();
 public abstract void tuneChannel();
}

2.創建具體的電視機,繼承自抽象電視機類:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/// <summary>
/// 三星牌電視機,重寫基類的抽象方法
/// </summary>
public class Samsung:TV
{
 public override void On()
 {
  Console.WriteLine("三星牌電視機已經打開了");
 }
 
 public override void Off()
 {
  Console.WriteLine("三星牌電視機已經關掉了");
 }
 
 public override void tuneChannel()
 {
  Console.WriteLine("三星牌電視機換頻道");
 }
}
 
/// <summary>
/// 長虹牌電視機,重寫基類的抽象方法
/// 提供具體的實現
/// </summary>
public class ChangHong : TV
{
 public override void On()
 {
  Console.WriteLine("長虹牌電視機已經打開了");
 }
 
 public override void Off()
 {
  Console.WriteLine("長虹牌電視機已經關掉了");
 }
 
 public override void tuneChannel()
 {
  Console.WriteLine("長虹牌電視機換頻道");
 }
}

3.然后抽象出概覽中的遙控器,扮演抽象話的角色。

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/// <summary>
/// 抽象概念中的遙控器,扮演抽象化角色
/// </summary>
public abstract class RemoteControl
{
 public TV implementor { get; set; }
 
 /// <summary>
 /// 開電視機
 /// 這里抽象類中不再提供實現了,而是調用實現類中的實現
 /// </summary>
 public virtual void On()
 {
  implementor.On();
 }
 
 /// <summary>
 /// 關電視機
 /// </summary>
 public virtual void Off()
 {
  implementor.Off();
 }
 
 /// <summary>
 /// 換頻道
 /// </summary>
 public virtual void SetChannel()
 {
  implementor.tuneChannel();
 }
}

4.創建具體遙控器類:這里面,我重寫了更換頻道的方法,其實還可以重寫其他的方法。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/// <summary>
/// 具體遙控器類
/// </summary>
public class ConcreteRemote:RemoteControl
{
 /// <summary>
 /// 重寫更換頻道方法
 /// </summary>
 public override void SetChannel()
 {
  Console.WriteLine("重寫更換頻道方法");
  base.SetChannel();
 }
}

5.調用:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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();
  }

這樣接實現了橋接模式的設計,遙控器的功能實現方法不是在遙控器中去實現了,而是將實現部分用來另一個電視機類去封裝它,遙控器中只包含電視機類的一個引用,通過橋接模式,我們把抽象化和實現化部分分離開了,這樣可以很好應對這兩方面的變化。

優點:

抽象接口與其實現解耦,期中的抽象和實現可以獨立的進行擴展,不會影響到對方。

缺點:

增加了系統的復雜度。

使用場景:

1、如果一個系統需要在構件的抽象化角色和具體化角色之間添加更多的靈活性,避免在兩個層次之間建立靜態的聯系
2、設計要求實現化角色的任何改變不應當影響客戶端,或者實現化角色的改變對客戶端是完全透明的。
3、需要跨越多個平臺的圖形和窗口系統上
4、一個類存在兩個獨立變化的維度,且兩個維度都需要進行擴展。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲视频在线一区二区 | 男人把大ji巴放进男人免费视频 | 成人先锋| 四虎影院网址大全 | 师尊被各种play打屁股 | 欧美穿高跟鞋做爰 | 黄色a∨| 欧美折磨另类系列sm | 四虎影视永久在线精品免费 | 亚洲一区二区三区不卡在线播放 | 催眠 迷j系列小说 | 国产亚洲精品第一综合linode | 香蕉人人超人人超碰超国产 | 奇米影视777最新在线 | a级亚洲片精品久久久久久久 | 日本一区二区视频免费播放 | 国产精品一区二区久久不卡 | 啪啪免费网址 | 91精品国产综合久久精品 | 日韩大片在线播放 | 色综合久久98天天综合 | 青青草国产青春综合久久 | 男人的j伸到女人的屁股眼 男人吃奶动态图 | 午夜精品久久久 | 亚洲XXX午休国产熟女屁 | 国产视频在线一区 | 精品国产福利在线 | 国产自在自拍 | 亚洲国产综合另类视频 | 青青91| 特黄特色大片免费影院 | 日本人交换乱理伦片 | 欧洲网色偷偷亚洲男人的天堂 | 久久全国免费久久青青小草 | 日韩精品亚洲专区在线影视 | 91热爆在线| 91精品大神国产在线播放 | 欧美一级片在线看 | 国产欧美国产精品第一区 | 欧美大奶艳星 | 免费yjsp妖精com |