亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C# 設計模式系列教程-外觀模式

2020-01-24 01:08:38
字體:
來源:轉載
供稿:網友

1. 概述

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

2. 模式中的角色

  2.1 外觀類(Facade):外觀類知道哪些子系統類負責處理請求,將客戶的請求代理給恰當的子系統對象。

  2.2 子系統類集合(SubSystem Classes):子系統類集合實現了子系統的功能,處理外觀類對象指派的任務。

3. 模式解讀

  3.1 外觀模式的類圖

http://files.VeVB.COm/file_images/article/201606/2016060110264513.png

  3.2 外觀模式的代碼實現

 /// <summary> /// 子系統中的一個類 /// </summary> public class SubSystemOne {  public void MethodeOne()  {   Console.WriteLine("Sub System first method.");  } } /// <summary> /// 子系統中一個類 /// </summary> public class SubSystemTwo {  public void MethodTwo()  {   Console.WriteLine("Sub System second method.");  } } /// <summary> /// 子系統中一個類 /// </summary> public class SubSystemThree {  public void MethodThree()  {   Console.WriteLine("Sub System third method.");  } } /// <summary> /// 子系統中一個類 /// </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 客戶端代碼

 class Program {  static void Main(string[] args)  {   // 由于Facade的作用,客戶端可以根本不知道子系統類的存在   Facade facade = new Facade();   facade.MethodA();   facade.MethodB();   Console.Read();  } }

    運行結果

http://files.VeVB.COm/file_images/article/201606/2016060110264514.png

4. 模式總結

  4.1 優點

    4.1.1 Facade模式降低了客戶端對子系統使用的復雜性。

    4.1.2 外觀模式松散了客戶端與子系統的耦合關系,讓子系統內部的模塊能更容易擴展和維護。

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

  4.2 缺點

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

  4.3 適用場景

    4.3.1 需要將設計進行分層時考慮Facade模式。

    4.3.2 在開發階段,子系統往往因為重構變得越來越復雜,增加外觀模式可以提供一個簡單的接口,減少它們之間的依賴。

    4.3.3 在維護一個遺留的大型系統時,可以這個系統已經非常難以維護和擴展,可以為新系統開發一個Facade類,來提供設計粗糙或高度復雜的遺留代碼的比較清晰簡單的接口,讓新系統與Facade對象交互,Facade與遺留代碼交互所有復雜的工作。

5. 應用舉例:分層開發中,對數據訪問層我們增加DataAccess作為對外的接口來操作數據庫子系統。

  5.1 實現類圖

http://files.VeVB.COm/file_images/article/201606/2016060110264515.png

  5.2 實現代碼

 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為客戶端提供一個簡單的接口 /// </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 客戶端代碼

 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();  } }

  運行結果

http://files.VeVB.COm/file_images/article/201606/2016060110264516.png

以上就是本文的全部內容,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久久久久尿| 红桃av永久久久| 国内揄拍国内精品| 一区二区三区亚洲| 欧美激情久久久久久| 欧美一级淫片aaaaaaa视频| 国产精品高清在线| 欧美多人爱爱视频网站| 亚洲日韩欧美视频| 亚洲欧美日韩一区二区三区在线| 日韩精品免费看| 黄色成人在线免费| 日韩av在线天堂网| 成人免费视频网址| 国产亚洲精品一区二区| 亚洲精品美女久久久| 视频在线观看99| 69影院欧美专区视频| 欧美在线视频免费观看| 亚洲精品一区二区久| 国产丝袜精品第一页| xxxxxxxxx欧美| 日韩在线观看你懂的| 欧美精品一区二区三区国产精品| 北条麻妃一区二区三区中文字幕| 久久久天堂国产精品女人| 欧美日韩中文字幕在线视频| 日本伊人精品一区二区三区介绍| 日韩av在线免费播放| 久久久免费精品视频| 日韩av高清不卡| 国产精品你懂得| 欧美在线视频网站| 亚洲黄色成人网| 66m—66摸成人免费视频| 成人av在线亚洲| 欧美国产视频一区二区| 九九热这里只有精品免费看| 亚洲色图50p| 久久综合久久美利坚合众国| 最新国产精品亚洲| xx视频.9999.com| 日韩va亚洲va欧洲va国产| 中文字幕在线观看亚洲| 亚洲欧美国产日韩中文字幕| 日韩欧美中文免费| 亚洲激情电影中文字幕| 国产成人精品一区二区在线| 国产精品久久久久免费a∨大胸| 欧美国产欧美亚洲国产日韩mv天天看完整| 精品久久久久久久久久久久久久| 91sao在线观看国产| 97**国产露脸精品国产| 日韩成人黄色av| 亚洲资源在线看| 一个人看的www欧美| 日韩激情第一页| 国产国语videosex另类| 欧美性视频网站| 久久综合电影一区| 国产精品免费小视频| 播播国产欧美激情| 日韩高清免费在线| 欧美色另类天堂2015| 久久人人看视频| 久热在线中文字幕色999舞| 日韩电影视频免费| 亚洲人成网7777777国产| 久久国产色av| 国产精品久久久久久av福利| 日韩精品免费综合视频在线播放| 日韩精品免费在线| 国产极品精品在线观看| 久久久久久久香蕉网| 国产一区在线播放| 一本一本久久a久久精品综合小说| 国产v综合ⅴ日韩v欧美大片| 亚洲色图第一页| 日韩视频第一页| 欧亚精品中文字幕| 国产午夜精品美女视频明星a级| 亚洲午夜激情免费视频| 欧美日韩亚洲高清| 日韩中文字幕视频在线| 国产日韩欧美日韩大片| 91精品久久久久久久久久久久久| 国产精品免费看久久久香蕉| 久久国产精品久久精品| 亚洲欧美中文另类| 97av在线视频| 日本91av在线播放| 成人免费在线视频网址| 亚洲电影中文字幕| 欧美成人在线免费| 色综合久久中文字幕综合网小说| 国产成人精彩在线视频九色| 久久777国产线看观看精品| 欧美日韩国产专区| 国产亚洲一区二区在线| 欧美专区在线播放| 国产成人精品免高潮在线观看| 亚洲精品久久久久| 久久免费视频观看| 97在线观看视频国产| 久久精品国产v日韩v亚洲| 成人精品在线观看| 91视频-88av| 欧美成人激情视频免费观看| 国产精品成人一区二区| www.日韩不卡电影av| 国产亚洲aⅴaaaaaa毛片| 日韩欧美主播在线| 亚洲欧美精品suv| 欧美最顶级的aⅴ艳星| 伊人青青综合网站| 国语自产在线不卡| 日韩亚洲欧美中文在线| 欧美一区深夜视频| 日韩精品视频三区| 国产精品亚洲自拍| 欧美裸体男粗大视频在线观看| 久久6免费高清热精品| 国产精品自拍偷拍| 久久深夜福利免费观看| 一区二区欧美激情| 亚洲第一精品夜夜躁人人爽| 成人久久一区二区三区| 欧美黄色成人网| 亚洲天天在线日亚洲洲精| 性色av一区二区三区在线观看| 国产成人免费av| 国产精品1区2区在线观看| 午夜精品蜜臀一区二区三区免费| 欧美特级www| 一区二区三区四区在线观看视频| 91久久久久久久久| 国产97免费视| 在线日韩日本国产亚洲| 亚洲另类图片色| 久久99久久亚洲国产| 欧美另类老肥妇| 91精品国产高清久久久久久| 亚洲综合中文字幕在线观看| 亚洲欧美日本精品| 日韩av在线播放资源| 国产精品成人国产乱一区| 成人午夜激情网| 美女视频黄免费的亚洲男人天堂| 国产日韩欧美日韩| 久久亚洲精品视频| 欧美精品中文字幕一区| 国产精品白嫩美女在线观看| 精品国产91乱高清在线观看| 欧美在线免费看| 亚洲a∨日韩av高清在线观看| 精品国产区一区二区三区在线观看| 久久精品国产v日韩v亚洲| 久久精品国产久精国产思思| 久久久久久久久91| 国产有码在线一区二区视频| 久久韩国免费视频| 亚洲国产小视频| 亚洲免费福利视频| 精品亚洲精品福利线在观看|