“抽象”和“立面”有什么区别?
有什么区别吗?或者这些术语可以互换?
Facade是一种特定的设计模式,旨在将包/模块中的内部内容隐藏在定义良好的接口后面,使其客户无法看到。它通常将多个接口/类隐藏在一个通用接口/类后面,因此得名。
“抽象”是一个通用术语,意思是向外界隐藏事物的具体细节。
所以这两个不是可以互换的术语。
对我来说,抽象意味着获取事物集合的公共部分并从中创建一个基础事物,然后集合可以利用它,有点像父类。
外观是一张脸(字面意思),因此它们对基类的类比并不完全成立。外观更像是一个界面,因此它不必与使用它的事物相关。我觉得它更像是一个面具。例如,我的班级将有一个“一次性”面具。
因此,在我看来,区别在于抽象模式允许构建层次结构,而外观模式允许类看起来相似。
Facade 是一种 GoF 设计模式,非常具体。从本质上讲,它是关于从应用程序的主体中隐藏过于复杂的功能。
抽象是一个更模糊的术语,与向其客户端隐藏服务的功能有关。