外观模式中的外观类是否需要是静态的?

Lea*_*ner 0 c# design-patterns facade

我正在通过MSDN关于外观模式的文章. https://msdn.microsoft.com/en-us/library/orm-9780596527730-01-04.aspx#Anchor_0

我无法找到为什么他们将门面变成静态类的原因?为什么他们使用静态变量来保存子系统类的实例?他们为什么使用静态方法?我想知道背后的原因.

下面是该文章的静态代码部分.完整的代码可以在文章中找到.

public static class Facade 
{
     static SubsystemA a = new SubsystemA(  );
     static SubsystemB b = new SubsystemB(  );
     static SubsystemC c = new SubsystemC(  );

     public static void Operation1(  ) {
       Console.WriteLine("Operation 1\n" +
           a.A1(  ) +
           a.A2(  ) +
           b.B1(  ));
    }

     public static void Operation2(  ) {
       Console.WriteLine("Operation 2\n" +
           b.B1(  ) +
           c.C1(  ));
     }
   }
Run Code Online (Sandbox Code Playgroud)

gmi*_*ley 6

没有要求立面是静态的.它恰好发生在这个例子中.外立面只是一种模式.你可以轻松拥有一个仍然是门面的常规课程.要求是它提供了对更复杂的类和方法集的简化访问.而不是创建需要进行大量设置的3个左右的不同类的实例,并且通常需要多个方法调用来获得所需的最终输出,而facade类为程序员完成所有这些,提供简化的单个类引用和单个(或极少)函数调用.

通常,外观将使用通常需要多个步骤来检索的数据进行假设.这可以通过查看先前使用的输入参数的算法来完成,或者仅使用一些预定义的默认数据.