【问题标题】:What is the difference between an Abstraction and a Facade?抽象和外观有什么区别?
【发布时间】:2011-01-18 07:41:27
【问题描述】:

“抽象”和“立面”有什么区别?

有区别吗?或者这些术语可以互换?

【问题讨论】:

    标签: architectural-patterns


    【解决方案1】:

    facade pattern 是一个简化的接口,用于连接更大、可能更复杂的代码库。代码库可以是单个类或更多类。外观只是为您提供了一个简单的界面。

    Abstraction,用于表示一个概念,但不绑定到任何特定实例。 (即:一个抽象类)。这并不意味着简化(就像外观模式那样),而是制作一个“通用”接口或表示。

    【讨论】:

      【解决方案2】:

      Facade 是一种特定的设计模式,旨在将包/模块中的内部内容隐藏在定义良好的接口后面,使其客户无法看到。它通常将多个接口/类隐藏在一个通用接口/类后面,因此得名。

      “抽象”是一个通用术语,意思是向外界隐藏事物的具体细节。

      所以这两个不是可以互换的术语。

      【讨论】:

        【解决方案3】:

        Facade 是一种 GoF 设计模式,非常具体。从本质上讲,它是关于从应用程序的主体中隐藏过于复杂的功能。

        抽象是一个更模糊的术语,与向其客户端隐藏服务功能有关。

        【讨论】:

          【解决方案4】:

          对我来说,抽象意味着获取事物集合的公共部分并从中创建一个基础事物,然后集合可以利用它,有点像父类。

          外观是一张脸(字面意思),因此它们对基类的类比并不完全成立。外观更像是一个界面,因此它不必与使用它的事物相关联。我觉得它更像是一个面具。例如,我的班级将有一个“一次性”面具。

          所以在我看来,区别在于抽象模式允许构建层次结构,而外观模式允许类看起来相似。

          【讨论】:

            猜你喜欢
            • 2012-06-26
            • 2015-09-26
            • 2010-10-10
            • 2013-10-17
            • 2010-09-26
            • 2014-09-21
            • 1970-01-01
            • 2012-05-07
            • 2010-12-27
            相关资源
            最近更新 更多