当前位置: 首页 >  网技达人 >  外观模式

外观模式

导读:外观式定义.为子系统中的一组接口提供一个一致的界面,Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。.界面.在这里提到的界面,主要指的是从一个组件外部来看这个组件,能够看到什么,这就是这个组件的界面,也就是所说的外观。.接口.在这里提到的接口,主要指的是

外观式定义

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

界面

在这里提到的界面,主要指的是从一个组件外部来看这个组件,能够看到什么,这就是这个组件的界面,也就是所说的外观。

接口

在这里提到的接口,主要指的是外部和内部交互的这么一个通道,通常是指一些方法,可以是类的方法,也可以是 interface 的方法。也就是说,这里所说的接口,并不等价于 interface,也有可能是一个类。

外观模式的结构和说明

Facade

定义子系统的多个模块对外的高层接口,通常需要调用内部多个模块,从而把客户的请求代理给适当的子系统对象。

模块

接受 Facade 对象的委派,真正实现功能,各个模块之间可能有交互。
但是请注意,Facade 对象知道各个模块,但是各个模块不应该知道 Facade 对象。

代码示例

using System;

namespace NetCore3Console.Facade
{
    /// <summary>
    /// A模块的接口
    /// </summary>
    public interface AModuleApi
    {
        /// <summary>
        /// 示意方法,A模块 对外的一个功能方法
        /// </summary>
        void TextA();
    }

    public class AModuleImpl : AModuleApi
    {
        public void TextA()
        {
            Console.WriteLine("现在在A模块里面操作testA方法");
        }
    }

    /// <summary>
    /// B模块的接口
    /// </summary>
    public interface BModuleApi
    {
        /// <summary>
        /// 示意方法,A模块 对外的一个功能方法
        /// </summary>
        void TextB();
    }

    public class BModuleImpl : BModuleApi
    {
        public void TextB()
        {
            Console.WriteLine("现在在B模块里面操作testB方法");
        }
    }

    /// <summary>
    /// C模块的接口
    /// </summary>
    public interface CModuleApi
    {
        /// <summary>
        /// 示意方法,A模块 对外的一个功能方法
        /// </summary>
        void TextC();
    }

    public class CModuleImpl : CModuleApi
    {
        public void TextC()
        {
            Console.WriteLine("现在在B模块里面操作testC方法");
        }
    }

    /// <summary>
    /// 外观对象
    /// </summary>
    public class Facade
    {
        /// <summary>
        /// 示意方法,满足客户需要的功能
        /// </summary>
        public void Test()
        {
            //在内部实现的时候,可能会调用到内部的多个模块
            AModuleApi a = new AModuleImpl();
            a.TextA();
            BModuleApi b = new BModuleImpl();
            b.TextB();
            CModuleApi c = new CModuleImpl();
            c.TextC();
        }
    }
}

模式讲解

外观模式的目的

外观模式的目的不是给子系统添加新的功能接口,而是为了让外部减少与子系统内多个模块的交瓦,松散耦合,从而让外部能够更简单地使用子系统。

外观模式的实现

Facade的实现

对于一个子系统而言,外观类不需要很多,通常可以实现成为一个单例。也可以直接把外观中的方法实现成为静态的方法,这样就可以不需要创建外观对象的实例而直接调用,这种实现相当于把外观类当成一个辅助工具类实现。

Facade的方法实现

Facade的方法实现中,一般是负责把客户端的请求转发给子系统内部的各个模块进行处理,Facade 的方法本身并不进行功能的处理,Facade 的方法实现只是实现一个功能的组合调用。

思考外观模式

外观模式的本质

外观模式的本质是:封装交互,简化调用。

Facade 封装了子系统外部和子系统内部多个模块的交互过程,从而简化了外部的调用。通过外观,子系统为外部提供一些高层的接口,以方便它们的使用。

对设计原则的体现

外观模式很好地体现了“最少知识原则”。


外观模式就是新添加了个Facede类,在这里面组合调用其他方法呀。

内容
  • Docker的Portainer认识、安装、使用
    Docker的Portainer
    2023-12-08
    一、认识.docker的图形化界面.Portainer 是一个轻量级的容器管理界面,可以让用户更轻松地管理 Docker
  • 带你认识3个J.U.C组件扩展
    带你认识3个J.U.C组件扩展
    2023-12-06
    摘要: 本文主要为大家讲解3种J.U.C组件扩展。.本文分享自华为云社区《【高并发】J.U.C组件扩展》,作者: 冰 河
  • 千乎万唤始出来,支持gpt3和gpt4支持画图,的在线gpt应用接入案例开源上线啦
    千乎万唤始出来,支持gpt3和g
    2023-12-04
    了解OPEN AI 平台用户一直在说,这个接口要怎么对接,如何在体验。 由于我一直忙于接口中台开发,所以在线基于OPEN
  • 时尚个性针织毛衣
    时尚个性针织毛衣
    2023-12-11
    时尚个性针织毛衣.时尚个性针织毛衣一直是秋冬季节的必备单品,不仅可以很好地保暖,还能展现出个性与时尚。无论是女性还是男性
  • 休闲简约短袖衬衫
    休闲简约短袖衬衫
    2023-12-21
    休闲简约短袖衬衫.现代人生活节奏快,休闲简约的穿着成为时尚潮流。短袖衬衫作为经典的休闲单品,一直备受时尚人士的青睐。它舒
  • 经典款皮鞋
    经典款皮鞋
    2023-12-06
    经典款皮鞋.经典款皮鞋一直是时尚界的永恒之选,不论是商务场合、休闲聚会还是正式场合,都能展现出绅士淑女的气质和优雅。今天
  • 修身弹力牛仔裤
    修身弹力牛仔裤
    2023-12-26
    修身弹力牛仔裤:展现你的魅力.一、时尚的必备单品.修身弹力牛仔裤一直都是时尚界的必备单品,它不仅可以展现出个人的魅力,还
  • 可爱儿童内衣套装,优质棉质,柔软透气,呵护宝宝肌肤
    可爱儿童内衣套装,优质棉质,柔软
    2024-01-05
    可爱儿童内衣套装,优质棉质,柔软透气,呵护宝宝肌肤.宝宝的皮肤是非常娇嫩的,所以选择合适的内衣套装对于宝宝的健康和舒适至
  • 优雅复古半身裙,散发优雅复古气息
    优雅复古半身裙,散发优雅复古气息
    2024-01-15
    优雅复古半身裙,散发优雅复古气息.复古是一种永不过时的时尚趋势,它总能让人们联想到过去的美好时光。而半身裙则是女性衣橱里
  • 时尚修身连衣裙,展现优雅女性魅力
    时尚修身连衣裙,展现优雅女性魅力
    2023-12-06
    时尚修身连衣裙,展现优雅女性魅力.时尚修身连衣裙一直是女性衣橱里的必备单品,不仅款式多样,而且能够展现出女性的优雅魅力。
  • 潮流风衣大衣,彰显都市时尚风采
    潮流风衣大衣,彰显都市时尚风采
    2023-12-16
    潮流风衣大衣,彰显都市时尚风采.潮流风衣大衣一直是时尚界备受追捧的单品之一。它既能为我们遮风挡雨,又能为我们穿出时尚感,
  • 暖心家居服套装,柔软舒适,可爱**形象,让宝宝安心入睡
    暖心家居服套装,柔软舒适,可爱*
    2023-12-16
    暖心家居服套装,让宝宝安心入睡.宝宝的睡眠质量对成长发育至关重要,而穿着舒适的家居服对宝宝的睡眠质量有着直接的影响。为了
  • 时尚儿童牛仔裤,经典款式,耐穿耐磨,让宝宝更有个性
    时尚儿童牛仔裤,经典款式,耐穿耐
    2024-01-10
    时尚儿童牛仔裤引领潮流.时尚儿童牛仔裤一直是儿童服装中的经典款式,不仅经典耐穿,而且可以展现宝宝的个性。随着时尚的发展,