抽象和立面之间有什么区别?

时间:2010-02-18 12:45:13

标签: architectural-patterns

'抽象'和'门面'之间有什么区别?

有什么不同吗?或者这些术语是否可以互换?

4 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:3)

Facade是一种特定的设计模式,旨在将包/模块内部的内容隐藏在定义良好的接口后面的客户端中。它通常隐藏一个公共的接口/类,因此它的名字。

'抽象'是一个通用术语,意思是隐藏来自外部世界的具体细节。

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

抽象给我意味着从事物的集合中获取共同部分并从中创建基础事物,然后集合可以在其上绘制,类似于父类。

外观是一个面孔(从字面上讲),所以它们类比一个基类并不完全适用。外观更像是一个界面,所以它不必与使用它的东西相关联。我觉得它更像是一个面具。例如,我的班级将有一个“一次性”面具。

因此,在我看来,差异在于抽象模式允许构建层次结构,而外观模式允许类看起来类似。