C#设计模式之外观模式(Facade Mode)
博客专区 > GoodWin 的博客 > 博客详情
C#设计模式之外观模式(Facade Mode)
GoodWin 发表于4年前
C#设计模式之外观模式(Facade Mode)
  • 发表于 4年前
  • 阅读 204
  • 收藏 5
  • 点赞 0
  • 评论 0
  1. 外观模式

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

  2. 例子(引用于大话设计模式)

        子系统类代码如下:

class SubSystemOne
    {
        public void MethodOne()
        {
            Console.WriteLine("子系統方法一");
        }
    }

    class SubSystemTwo
    {
        public void MethodTwo()
        {
            Console.WriteLine("子系統方法二");
        }
    }

    class SubSystemThree
    {
        public void MethodThree()
        {
            Console.WriteLine("子系統方法三");
        }
    }

        外观类将子系统的方法加以组合,代码如下:

class Facade
    {
        SubSystemOne one;
        SubSystemTwo two;
        SubSystemThree three;

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

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

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

        客户端可以直接引用外观类代码,而不必接触到实际的子系统部分,示例代码如下:

class Program
    {
        static void Main(string[] args)
        {
            Facade facade = new Facade();

            facade.MethodA();
            facade.MethodB();

            Console.Read();
        }
    }

  3. 适用情况

      外观模式在面向对象的开发当中非常常用。

        1) 在设计初期阶段,如果利用经典的三层架构,就需要考虑在数据访问层和业务逻辑层、业务逻辑层和表示层的层与层之间建立外观Facade,可以为复杂的子系统提供一个简单的接口,降低了耦合度。

        2)在开发阶段,子系统经常会因为不断的重构演化变得越来越复杂,会产生很多细小的类,给外部调用他们的用户程序带来了困难。使用外观模式可以提供一个简单的接口。

        3)在维护一个大型的遗留程序时,如果这个系统已经非常难以维护和扩展,但它又包含着重要的功能。此时也可以用外观模式,为设计粗糙或者高度复杂的遗留代码提供一个简单的接口。让新系统与Facade交互,Facade与遗留代码交互所有复杂的工作。

共有 人打赏支持
粉丝 0
博文 7
码字总数 3274
×
GoodWin
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: