c# - 门面模式中的门面类是否需要是静态的?

我正在阅读有关门面模式的 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(  ));
     }
   }

最佳答案

没有要求外观是静态的。碰巧在这个例子中就是这样。门面只是一种模式。你可以很容易地拥有一个仍然是门面的常规类(class)。要求是它提供对一组更复杂的类和方法的简化访问。与创建 3 个左右不同类的实例不同,这些类需要进行一系列设置并且通常需要调用多个方法才能获得所需的最终输出,外观类为程序员完成了所有这些工作,提供了一个简化的单一类引用和单个(或大大减少)函数调用。

通常,外观会对通常需要多个步骤才能检索的数据进行假设。这可以通过查看以前使用的输入参数的算法来完成,或者简单地使用一些预定义的默认数据。

https://stackoverflow.com/questions/37580968/

相关文章:

oracle - 为什么我不能使用 SQLcl 通过 jdbc 连接

windows - 如何在命令提示符下查看我的 SYSTEM 环境变量?

haskell - 如何修改或读取作为函数参数传递的可变向量?

python - Sqlalchemy,递归获取具有关系的子项和祖先

python - Pandas 两行具有相同的索引,如何更改它们

javascript - 在 React 中停止路由更改的音频?

macos - 通过 PIP 安装 NPM,但得到 "npm: command not found"

bash - 防止 sed 创建临时文件

angular - PrimeNG 不适用于 angular2 cli?

r - 在 R 中转换日期格式