国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

服務(wù)器之家 - 編程語言 - C# - C# 設(shè)計(jì)模式系列教程-外觀模式

C# 設(shè)計(jì)模式系列教程-外觀模式

2021-11-23 15:03Wang Juqiang C#

外觀模式松散了客戶端與子系統(tǒng)的耦合關(guān)系,讓子系統(tǒng)內(nèi)部的模塊能更容易擴(kuò)展和維護(hù)。

1. 概述

  為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,此模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。

2. 模式中的角色

  2.1 外觀類(facade):外觀類知道哪些子系統(tǒng)類負(fù)責(zé)處理請(qǐng)求,將客戶的請(qǐng)求代理給恰當(dāng)?shù)淖酉到y(tǒng)對(duì)象。

  2.2 子系統(tǒng)類集合(subsystem classes):子系統(tǒng)類集合實(shí)現(xiàn)了子系統(tǒng)的功能,處理外觀類對(duì)象指派的任務(wù)。

3. 模式解讀

  3.1 外觀模式的類圖

C# 設(shè)計(jì)模式系列教程-外觀模式

  3.2 外觀模式的代碼實(shí)現(xiàn)

?
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/// <summary>
/// 子系統(tǒng)中的一個(gè)類
/// </summary>
public class subsystemone
{
 public void methodeone()
 {
  console.writeline("sub system first method.");
 }
}
 
/// <summary>
/// 子系統(tǒng)中一個(gè)類
/// </summary>
public class subsystemtwo
{
 public void methodtwo()
 {
  console.writeline("sub system second method.");
 }
}
 
/// <summary>
/// 子系統(tǒng)中一個(gè)類
/// </summary>
public class subsystemthree
{
 public void methodthree()
 {
  console.writeline("sub system third method.");
 }
}
 
/// <summary>
/// 子系統(tǒng)中一個(gè)類
/// </summary>
public class subsystemfour
{
 public void methodfour()
 {
  console.writeline("sub system fourth method.");
 }
}
 
/// <summary>
/// 外觀類
/// </summary>
public class facade
{
 private subsystemone one;
 private subsystemtwo two;
 private subsystemthree three;
 private subsystemfour four;
 
 public facade()
 {
  one = new subsystemone();
  two = new subsystemtwo();
  three = new subsystemthree();
  four = new subsystemfour();
 }
 
 public void methoda()
 {
  console.writeline("\nmethod group a----");
  one.methodeone();
  two.methodtwo();
  four.methodfour();
 }
 
 public void methodb()
 {
  console.writeline("\nmethod group b----");
  two.methodtwo();
  three.methodthree();
 }
}

    3.3 客戶端代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
class program
{
 static void main(string[] args)
 {
  // 由于facade的作用,客戶端可以根本不知道子系統(tǒng)類的存在
  facade facade = new facade();
  facade.methoda();
  facade.methodb();
 
  console.read();
 }
}

    運(yùn)行結(jié)果

C# 設(shè)計(jì)模式系列教程-外觀模式

4. 模式總結(jié)

  4.1 優(yōu)點(diǎn)

    4.1.1 facade模式降低了客戶端對(duì)子系統(tǒng)使用的復(fù)雜性。

    4.1.2 外觀模式松散了客戶端與子系統(tǒng)的耦合關(guān)系,讓子系統(tǒng)內(nèi)部的模塊能更容易擴(kuò)展和維護(hù)。

    4.1.3 通過合理使用facade,可以幫助我們更好的劃分訪問的層次。

  4.2 缺點(diǎn)

    過多的或者是不太合理的facade也容易讓人迷惑,到底是調(diào)用facade好呢,還是直接調(diào)用模塊好。

  4.3 適用場景

    4.3.1 需要將設(shè)計(jì)進(jìn)行分層時(shí)考慮facade模式。

    4.3.2 在開發(fā)階段,子系統(tǒng)往往因?yàn)橹貥?gòu)變得越來越復(fù)雜,增加外觀模式可以提供一個(gè)簡單的接口,減少它們之間的依賴。

    4.3.3 在維護(hù)一個(gè)遺留的大型系統(tǒng)時(shí),可以這個(gè)系統(tǒng)已經(jīng)非常難以維護(hù)和擴(kuò)展,可以為新系統(tǒng)開發(fā)一個(gè)facade類,來提供設(shè)計(jì)粗糙或高度復(fù)雜的遺留代碼的比較清晰簡單的接口,讓新系統(tǒng)與facade對(duì)象交互,facade與遺留代碼交互所有復(fù)雜的工作。

5. 應(yīng)用舉例:分層開發(fā)中,對(duì)數(shù)據(jù)訪問層我們?cè)黾觗ataaccess作為對(duì)外的接口來操作數(shù)據(jù)庫子系統(tǒng)。

  5.1 實(shí)現(xiàn)類圖

C# 設(shè)計(jì)模式系列教程-外觀模式

  5.2 實(shí)現(xiàn)代碼

?
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
public class employee
{
 public string name { get; set; }
 public int age { get; set; }
 
 public salary salary { get; set; }
}
 
public class salary
{
 public datetime from { get; set; }
 public datetime to { get; set; }
 public decimal amount { get; set; }
}
 
public class employeedataaccess
{
 public void saveemployee(employee employee)
 {
  console.writeline("save employee to database.");
 }
 
 public void deleteemployee(employee employee)
 {
  console.writeline("remode employee from database.");
 }
}
 
public class salarydataaccess
{
 public void savesalary(salary salary)
 {
  console.writeline("save salary to database.");
 }
 
 public void deletesalary(salary salary)
 {
  console.writeline("remove salary from database.");
 }
}
 
/// <summary>
/// dataaccess為客戶端提供一個(gè)簡單的接口
/// </summary>
public class dataaccess
{
 private employeedataaccess employeedataaccess = new employeedataaccess();
 private salarydataaccess salarydataaccess = new salarydataaccess();
 
 public void saveemployee(employee employee)
 {
  // 先保存員工基本信息
  employeedataaccess.saveemployee(employee);
 
  // 保存員工薪水信息
  salarydataaccess.savesalary(employee.salary);
 }
 
 public void removeemployee(employee employee)
 {
  // 先刪除員工薪水信息
  salarydataaccess.deletesalary(employee.salary);
 
  // 刪除員工基本信息
  employeedataaccess.deleteemployee(employee);
 }
}

  5.3 客戶端代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
class program
{
 static void main(string[] args)
 {
  dataaccess.dataaccess dataaccess = new dataaccess.dataaccess();
  dataaccess.employee employee = new dataaccess.employee() { salary = new dataaccess.salary(), name = "wang kevin", age = 22 };
 
  dataaccess.saveemployee(employee);
  dataaccess.removeemployee(employee);
 
  console.read();
 }
}

  運(yùn)行結(jié)果

C# 設(shè)計(jì)模式系列教程-外觀模式

以上就是本文的全部內(nèi)容,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
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 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 久久日韩 | 精品国产99 | 国产乱码久久久久久一区二区 | 国产精品久久久久久久久久久久冷 | 一区二区三区视频 | 国产一区二区三区视频在线观看 | 日韩视频在线观看 | 2015成人永久免费视频 | 久草在线 | 中文字幕久久久 | 国产日韩欧美一二三区 | 狠狠综合久久 | 成人免费视频在线观看 | 日韩一区二区三区在线视频 | 黄色免费网站观看 | a∨色狠狠一区二区三区 | 欧美午夜精品 | 欧美.com| 国产精品一区二区三区在线播放 | 国产色黄视频 | 日韩在线观看 | 成人a级片在线观看 | 亚洲欧美v国产一区二区 | 在线国产视频 | 国产精品视屏 | 精品国产精品三级精品av网址 | 免费观看一级特黄欧美大片 | 婷婷精品久久久久久久久久不卡 | 久久中文在线观看 | 亚洲成人一区二区三区 | 欧美另类视频在线 | 成人片在线播放 | 国产欧美日韩在线 | 日韩欧美~中文字幕 | 国产精品中文字幕在线 | 久精品视频 | 欧美日韩在线不卡 | 免费a视频 | 成人羞羞视频免费 | 久久久精品黄色 | 日本一区二区高清不卡 |