模式九:外观模式

9.1外观模式定义:

  提供了一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层接口,让子系统更加容易使用。

                                 

9.2外观模式UML类图:

 

9.3应用场景:

   生活中其实有许多外观模式,例如我们去自动取款机取钱,和我们打交道的是取款机(相当于银行一系列复杂子系统的Facade),当我们按下取款按键,对应于银行内部的操作至少有:1、验证密码正确性。2、验证金额正确性。3、把钱从你的帐户上划出。4、从取款机中吐出现金等等一系列操作。这里的每一个操作都可以看成是一个个小的子系统。而取款人(Client)不是直接和银行内部的各个的子系统的接口打交道,而是只和各子系统的“代言人”取款机(Façade)打交道,取款机相当于将银行内部一系列复杂的子系统接口隐藏起来,而只是提供一个相对简单的接口(这里对应取款按键)给客户。

 

9.4外观模式分析与实现(c#描述):

//外观

    public class Facade

    {

        SubSystem1 lobj_SubSystem1;

        SubSystem2 lobj_SubSystem2;

        SubSystem3 lobj_SubSystem3;

 

        public Facade(SubSystem1 aobj_SubSystem1, SubSystem2 aobj_SubSystem2, SubSystem3 aobj_SubSystem3)

        {

            this.lobj_SubSystem1 = aobj_SubSystem1;

            this.lobj_SubSystem2 = aobj_SubSystem2;

            this.lobj_SubSystem3 = aobj_SubSystem3;

        }

 

        public void Do()

        {

            lobj_SubSystem1.Method1();

            lobj_SubSystem2.Method1();

            lobj_SubSystem3.Method1();       

        }

   

    }

 

    //子系统1

    public class SubSystem1

    {

        public void Method1()

        {

            System.Console.WriteLine("Hello,SubSystem1");

        }

    }

 

    //子系统2

    public class SubSystem2

    {

        public void Method1()

        {

            System.Console.WriteLine("Hello,SubSystem2");

        }

    }

 

    //子系统3

    public class SubSystem3

    {

        public void Method1()

        {

            System.Console.WriteLine("Hello,SubSystem3");

        }

    }

 

    //调用类

    public class Facade_Test

    {

        public static void Do()

        {

            Facade lobj_Facade = new Facade(new SubSystem1(),new SubSystem2(),new SubSystem3());//客户只和Facade打交道。

            lobj_Facade.Do();//隐藏子系统一系列复杂接口,只留一个简单接口暴露给客户。

        }

 }

 

外观模式遵守了一个重要的设计原则:最少知识原则

最少知识原则:只和你的密友谈话。

 

这个原则希望我们在设计的过程中,不要让太多的类耦合在一起,免得修改系统中一部分,会影响到其它部分。如果许多类之间相互依赖,那么这个系统就会变成一个易碎的系统,它需要花许多成本来维护,也会因为太复杂而不容易被其它人了解。

 

外观模式和适配器模式的区别:外观模式的意图是提供子系统的一个简化接口,而适配器模式的意图是“改变”接口以满足客户的需求。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值