4

java中的外观设计和抽象有什么区别?我只是觉得它就像java中的接口一样简单,并且具有相同的目的。

我看到更多关于人们说这是客户的第一次接触,隐藏了更多的接口和类。但以上都是接口的目的。!!!

在这里糊涂了!!!!!!请举一个小例子并帮助我。

谢谢,普尼斯

4

3 回答 3

6

来自维基百科:

外观是一个对象,它为更大的代码体(例如类库)提供简化的接口。立面可以:

  • 使软件库更易于使用、理解和测试,因为外观为常见任务提供了方便的方法;

  • 出于同样的原因,使库更具可读性;减少外部代码对库内部工作的依赖,因为大多数代码都使用外观,从而在开发系统时提供更大的灵活性;

  • 用一个设计良好的 API(根据任务需要)包装设计不佳的 API 集合。

当包装器必须尊重特定接口并且必须支持多态行为时,使用适配器。另一方面,当人们想要一个更简单或更简单的界面来使用时,就会使用外观。

这意味着外观是具有行为的实际对象,而不是接口。接口的作用是指定实现必须支持哪些操作,而外观提供了使用代码体(例如整个库)的简单/方便的方法,例如提供常用的设置、默认值等.

于 2012-06-06T12:06:13.990 回答
1

外观模式是一种设计模式。所有的设计模式都是抽象的。这里真正的问题是“什么是抽象?”。

抽象是当你隐藏一些细节时。例如,您可能有一个为每个域模型(例如用户、项目、操作等)提供服务的应用程序。您希望您的 API 的使用者不必知道这些细节(即担心获得正确的服务、如何一起使用它们等),所以您建立了一个“门面”,它只是一个服务所有其他服务所做的一切,但在一个界面中。这是一个抽象,因为 Facade 用户不知道幕后有 N 个服务,也不关心它们是如何使用的,因为他/她只是使用统一的实现。

您已经使用设计模式抽象出细节。

于 2012-06-06T12:03:06.893 回答
0

外观模式不仅仅是对真实类的接口抽象。它可用于对应用程序的状态进行检查以确定 Facade 方法的行为,例如

Facade.GetUserDetails()

执行检查以查看是否存在数据库连接,如果没有,则缓存中的用户等。

此外,取决于门面的类型

IFACADE --> 网球:IFACADE --> 壁球:IFACADE

这是可以利用抽象和外观的力量的地方......

于 2012-06-06T12:05:29.613 回答