1. 程式人生 > >C#設計模式:外觀模式(Facade Pattern)

C#設計模式:外觀模式(Facade Pattern)

避免 linq 訪問 客戶端 這一 存在 www 針對 public

一,什麽是外觀模式?

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

二,我們看看代碼的實現

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _10.外觀模式
{
    class Program
    {
        static void Main(string[] args)
        {
            
//不存在外觀類是我們的調用方法是這樣的,如下代碼; //People p = new People("中國人"); //Event e = new Event(); //Console.Write(p.people); //e.Say(); //外觀系統,跟以上代碼比較,我們可以知道:外觀模式提供了一個統一的接口,用來訪問子系統中的一群接口。而不用實例過多,同時也降低了客戶端和子系統之間的緊耦合,如People和Event的實例都不在Program中了 Facade fa = new
Facade("中國人"); fa.WhoEvent(); Facade fa1 = new Facade("美國人"); fa1.WhoEvent(); Console.Read(); } } /// <summary> /// 外觀類 /// </summary> public class Facade { private Event ev { get; set; } private People pe { get
; set; } public Facade(string people) { ev = new Event(); pe = new People(people); } public void WhoEvent() { Console.Write(pe.people); ev.Say(); ev.Eat(); } } /// <summary> /// 相當於行為子系統 /// </summary> public class Event { public void Say() { Console.Write("說話和"); } public void Eat() { Console.WriteLine("吃飯"); } } /// <summary> /// 相當於人子系統 /// </summary> public class People { public string people { get; set; } public People(string p) { this.people = p; } } }

三,在上面代碼中,我們的代碼結構是:客戶端--》Facade--》n個子系統(People和Event等)

1》在外觀模式中我們,完全將子系統的實例放到外觀裏面,這裏我們可以將提供了一個一直的界面,客戶端可以直接通過外觀類來調用內部子系統中方法,而避免了耦合

四,那外觀模式和適配器模式有什麽區別呢?

適配器:Adapter適配器模式是將兩個不兼容的類組合在一起使用

外觀模式:為子系統中的一組接口提供一個一致的界面

根據以上兩個解釋我們可以知道:

1》適配器是針對單個對象,而外觀模式是針對多個對象(子系統)的

2》適配器是對單個對象的接口適配,從而實現現有了類可以適配當前系統的結果

3》而外觀模式則是將多個子系統的接口包裝起來,實現降低耦合和共同調用,和適配器模式的意圖是不一樣的

C#設計模式:外觀模式(Facade Pattern)