GGYS

博客园 首页 新随笔 联系 订阅 管理

外观模式定义:

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

使用阶段:

1.在设计初期阶段

2.开发阶段

3.接受一个新的(或旧的)大型系统

在这些阶段的时期都是解决了内部子系统的复杂联系,让整个系统有一个“前台”就行。

在生活中的实例就是做饭吃,如果我们在家吃饭就需要买菜、洗菜、切菜、炒菜。但如果我们去饭店吃饭,我们只需要和服务员说我们吃什么就行了,服务员去后厨报菜名就行了,我们根本不需要去知道这个菜怎么做的就行,后厨只知道这是服务员要的菜,这就节省了很多的事情。

缺点

就是这个外观模式不符合开闭原则,如果出现新的子系统就需要修改外观层的代码

 //外观类
    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 SubSystemFour
    {
        public void MethodFour()
        {
            Console.WriteLine(" 子系统方法四");
        }
    }
//客户端
static void Main(string[] args)
        {
            Facade facade = new Facade();
            
            facade.MethodA();
            facade.MethodB();

            Console.Read();
        }

在我们平常的一些代码程序在编写时也有用到。外观模式又称为门面模式,它是一种对象结构型模式。外观模式是迪米特法则的一种具体实现,通过引入一个新的外观角色可以降低原有系统的复杂度,同时降低客户类与子系统的耦合度。

posted on 2021-02-23 16:01  pengpeng077  阅读(9)  评论(0)    收藏  举报  来源