zoukankan      html  css  js  c++  java
  • C#设计模式:外观模式(Facade Pattern)

    一,什么是外观模式?

    外观模式:为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。

    二,我们看看代码的实现

    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》而外观模式则是将多个子系统的接口包装起来,实现降低耦合和共同调用,和适配器模式的意图是不一样的

  • 相关阅读:
    结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程--课程实验3
    深入理解系统调用 -- 课程实验2
    基于mykernel 2.0编写一个操作系统内核--课程实验1
    如何评测软件工程知识技能水平?
    如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?
    深入理解TCP协议及其源代码
    Socket与系统调用深度分析
    创新产品的需求分析:未来的图书是什么样的
    构建调试Linux内核网络代码的环境MenuOS系统
    php db2 返回当前insert记录的自增id
  • 原文地址:https://www.cnblogs.com/May-day/p/8670360.html
Copyright © 2011-2022 走看看