ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

外观模式

2021-11-24 23:05:19  阅读:129  来源: 互联网

标签:外观 Console void 模式 子系统 接口 WriteLine public


编辑说明

概述

为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,为这个接口使用

外观模式也可以叫为门面模式,应用场景也比较明确,主要在接口设计方面使用

结构图

代码实现

子系统

    /// <summary>
    /// 子系统一
    /// </summary>
    public class SubSystemOne
    {
        public void MethodOne()
        {
            Console.WriteLine(" 子系统方法一");
        }
    }
    /// <summary>
    /// 子系统二
    /// </summary>
    public class SubSystemTwo
    {
        public void MethodTwo()
        {
            Console.WriteLine(" 子系统方法二");
        }
    }
    /// <summary>
    /// 子系统三
    /// </summary>
    class SubSystemThree
    {
        public void MethodThree()
        {
            Console.WriteLine(" 子系统方法三");
        }
    }
    /// <summary>
    /// 子系统四
    /// </summary>
    public class SubSystemFour
    {
        public void MethodFour()
        {
            Console.WriteLine(" 子系统方法四");
        }
    }

 

外观类

  /// <summary>
    /// 外观类
    /// </summary>
    public class Facade
    {
        SubSystemOne one;
        SubSystemTwo two;
        SubSystemThree three;
        SubSystemFour four;

        public Facade()
        {
            one = new SubSystemOne();
            two = new SubSystemTwo();
            three = new SubSystemThree();
            four = new SubSystemFour();
        }

        public void MethodA()
        {
            Console.WriteLine("\n方法组A() ---- ");
            one.MethodOne();
            two.MethodTwo();
            four.MethodFour();
        }

        public void MethodB()
        {
            Console.WriteLine("\n方法组B() ---- ");
            two.MethodTwo();
            three.MethodThree();
        }
    }

 

客户端

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

运行结果

 

 

优势

符合迪米特法则(最少知识原则)

隐藏系统的复杂性,提供精简的访问方法,让高层模块可以更加容易地间接调用这些子系统的功能。

减少系统相互依赖

提高灵活性

提高了安全性

降低了大型软件系统中的编译依赖性,简化了系统在不同平台之间的移植过程

使用场景

阶段各种第三方SDK、开源类库的使用

为复杂的模块或子系统提供外界访问的模块。

子系统相对独立。

预防低水平人员带来的风险。

解决易用性问题

通过将多个接口调用替换为一个门面接口调用,减少网络通信成本,提高  客户端的响应速度

解决分布式事务问题。让两个不同的接口达到事务执行要引入很多机制非常复杂,要是再用一个接口包裹这来两个接口来做处理就会比较简单

缺陷

不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。

Demo

标签:外观,Console,void,模式,子系统,接口,WriteLine,public
来源: https://www.cnblogs.com/netcjl/p/15390420.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有