亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎樣理解NET設計模式實例中的外觀模式

發布時間:2021-10-27 17:49:58 來源:億速云 閱讀:103 作者:柒染 欄目:編程語言

本篇文章給大家分享的是有關怎樣理解NET設計模式實例中的外觀模式,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

一、外觀模式簡介(Brief Introduction)

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

二、解決的問題(What To Solve)

1、分離不同的兩個層

典型的分層例子是Net三層架構,界面層與業務邏輯層分離,業務邏輯層與數據訪問層分類。這樣可以為子系統提供統一的界面和接口,降低了系統的耦合性。

2、減少依賴

隨著功能增加及程序的重構,系統會變得越來越復雜,這時增加一個外觀可以提供一個簡單的接口,減少他們之間的依賴。

3、為新舊系統交互提供接口

有的時候,新系統需要舊系統的核心功能,而這個舊的系統已經很難維護和擴展,可以給新系統增加一個Façade類,是的新系統與Façade類交互,Façade類與舊系統交互素有復雜的工作。

三、外觀模式分析(Analysis)

1、外觀模式結構

怎樣理解NET設計模式實例中的外觀模式

2、源代碼

1、子系統類SubSystemOne

public class SubSystemOne  {      public void MethodOne()      {          Console.WriteLine("執行子系統One中的方法One");      }  }

2、子系統類SubSystemTwo

public class SubSystemTwo  {      public void MethodTwo()      {          Console.WriteLine("執行子系統Two中的方法Two");      }  }

3、子系統類SubSystemThree

public class SubSystemThree  {      public void MethodThree()      {          Console.WriteLine("執行子系統Three中的方法Three");      }  }

4、Facade 外觀類,為子系統類集合提供更高層次的接口和一致的界面

public class Facade  {      SubSystemOne one;      SubSystemTwo two;      SubSystemThree three;      public Facade()      {         one = new SubSystemOne();          two = new SubSystemTwo();          three = new SubSystemThree();      }      public void MethodA()      {          Console.WriteLine("開始執行外觀模式中的方法A");          one.MethodOne();          two.MethodTwo();          Console.WriteLine("外觀模式中的方法A執行結束");          Console.WriteLine("---------------------------");      }      public void MethodB()     {          Console.WriteLine("開始執行外觀模式中的方法B");          two.MethodTwo();          three.MethodThree();          Console.WriteLine("外觀模式中的方法B執行結束");      }  }

5、客戶端代碼

static void Main(string[] args)  {      Facade facade = new Facade();      facade.MethodA();      facade.MethodB();      Console.Read();  }

3、程序運行結果

怎樣理解NET設計模式實例中的外觀模式

四.案例分析(Example)

1、場景

假設遠程網絡教育系統-用戶注冊模塊包括功能有

1、驗證課程是否已經滿人

2、收取客戶費用

3、通知用戶課程選擇成功

如下圖所示

怎樣理解NET設計模式實例中的外觀模式

子系統類集合包括:PaymentGateway類、RegisterCourse類、NotifyUser類

PaymentGateway類:用戶支付課程費用

RegisterCourse類:驗證所選課程是否已經滿人以及計算課程的費用

NotifyUser類:" 用戶選擇課程成功與否"通知用戶

RegistrationFacade類:外觀類,提供一個統一的界面和接口,完成課程校驗、網上支付、通知用戶功能

2、代碼

1、子系統類集合

namespace FacadePattern     {    /// <summary>    /// Subsystem for making financial transactions    /// </summary>    public class PaymentGateway    {    public bool ChargeStudent(string studentName, int costTuition)    {    //Charge the student    Console.WriteLine(String.Format("Charging student {0} for ${1}", studentName, costTuition.ToString()));    return true;    }    }    /// <summary>    /// Subsystem for registration of courses    /// </summary>    public class RegisterCourse    {     public bool CheckAvailability(string courseCode)    {    //Verify if the course is available..                   Console.WriteLine(String.Format("Verifying availability of seats for the course : {0}", courseCode));                  return true;               }              public int GetTuitionCost(string courseCode)               {                   //Get the cost of tuition                   return 1000;               }           }          /// <summary>           /// Subsystem for Notifying users          /// </summary>          public class NotifyUser           {              public bool Notify(string studentName)              {                  //Get the name of the instructor based on Course Code                  //Notify the instructor                   Console.WriteLine("Notifying Instructor about new enrollment");                   return true;              }          }       }

2、外觀類Fa&ccedil;ade Class

/// <summary>    /// The Facade class that simplifies executing methods  in the subsystems and hides implementation for the client   /// </summary>    public class RegistrationFacade    {    private PaymentGateway _paymentGateWay;    private RegisterCourse _registerCourse;    private NotifyUser _notifyUser;    public RegistrationFacade()    {    _paymentGateWay = new PaymentGateway();    _registerCourse = new RegisterCourse();    _notifyUser = new NotifyUser();    }    public bool RegisterStudent(string courseCode, string studentName)     {    //Step 1: Verify if there are available seats    if (!_registerCourse.CheckAvailability(courseCode))    return false;    //Step 2: Charge the student for tuition    if (!_paymentGateWay.ChargeStudent(studentName, _registerCourse.GetTuitionCost(courseCode)))    return false;    //Step 3: If everything's successful so far, notify the instructor of the new registration    return _notifyUser.Notify(studentName);

3、客戶端代碼

namespace FacadePattern    {    class Program     {    static void Main(string[] args)    {    RegistrationFacade registrationFacade = new RegistrationFacade();    if (registrationFacade.RegisterStudent("DesignPatterns101", "Jane Doe"))    Console.WriteLine("Student Registration SUCCESSFUL!");    else   Console.WriteLine("Student Registration Unsuccessful");    }    }     }

五、總結(Summary)

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

外觀模式可以解決層結構分離、降低系統耦合度和為新舊系統交互提供接口功能。

以上就是怎樣理解NET設計模式實例中的外觀模式,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湖南省| 上林县| 淮阳县| 子洲县| 惠州市| 通州市| 柯坪县| 融水| 安宁市| 宜黄县| 丹巴县| 通城县| 焦作市| 沭阳县| 斗六市| 清丰县| 玉田县| 贵州省| 苍南县| 泾源县| 苏尼特左旗| 沛县| 平阴县| 毕节市| 马龙县| 揭阳市| 明星| 玉屏| 广安市| 息烽县| 泰和县| 南昌县| 东丽区| 临夏市| 荣昌县| 微山县| 靖州| 甘洛县| 如皋市| 富宁县| 新民市|