激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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)與實現(xiàn)化(Implementation)脫耦,使得二者可以獨立地變化。

橋接模式結構圖:

.NET橋接模式講解

橋接模式中得角色:

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

結合實例說明:

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

使用:

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.創(chuàng)建具體的電視機,繼承自抽象電視機類:

 

?
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>
/// 長虹牌電視機,重寫基類的抽象方法
/// 提供具體的實現(xiàn)
/// </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>
 /// 開電視機
 /// 這里抽象類中不再提供實現(xiàn)了,而是調用實現(xiàn)類中的實現(xiàn)
 /// </summary>
 public virtual void On()
 {
  implementor.On();
 }
 
 /// <summary>
 /// 關電視機
 /// </summary>
 public virtual void Off()
 {
  implementor.Off();
 }
 
 /// <summary>
 /// 換頻道
 /// </summary>
 public virtual void SetChannel()
 {
  implementor.tuneChannel();
 }
}

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

?
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)
  {
   // 創(chuàng)建一個遙控器
   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();
  }

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

優(yōu)點:

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

缺點:

增加了系統(tǒng)的復雜度。

使用場景:

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

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

延伸 · 閱讀

精彩推薦
511
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 久久中文免费 | 成人免费观看在线视频 | 欧美黄色大片免费观看 | 万圣街在线观看免费完整版 | 久久国产一二区 | 日韩精品一区二区三区中文 | 91在线视频精品 | 日韩 综合 | 成人资源在线 | 精品一区二区免费 | 美国av免费看 | 中文字幕亚洲一区二区三区 | 二区三区偷拍浴室洗澡视频 | 成人毛片网站 | 成人乱人乱一区二区三区 | 91麻豆精品国产91久久久无需广告 | 在线影院av | 国产亚洲黑人性受xxxx精品 | 毛片区 | 午色影院 | 国产一级大片在线观看 | 亚洲人成中文字幕在线观看 | 中文字幕一区在线观看视频 | 欧美在线黄色 | 九九热免费在线观看 | h色网站在线观看 | 亚洲生活片 | 免费一级特黄毛片 | 精品一区二区三区在线观看视频 | 男女羞羞视频在线免费观看 | 久久精品超碰 | 羞羞的视频在线免费观看 | 国产成年人小视频 | 蜜桃欧美性大片免费视频 | 久久成年网| 久久精品日韩一区 | 成年免费观看视频 | 日韩精品久久久久久 | 日本最新免费二区三区 | 日本中文字幕高清 | 日韩黄色片免费看 |