门面设计模式和抽象

时间:2012-06-06 11:58:22

标签: java oop design-patterns

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

我看到更多关于人们说它是客户端的第一个联系人,隐藏了更多的接口和类。但以上所有也是接口的目的。!!!

在这里感到困惑!!!!!!请举一个小例子来帮助我。

感谢, Punith

3 个答案:

答案 0 :(得分:5)

来自维基百科:

  

facade是一个对象,它为更大的代码体提供了简化的接口,例如类库。门面可以:

     
      
  • 使软件库更易于使用,理解和测试,因为外观具有方便的常用任务方法;

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

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

  •   
     

当包装器必须遵循特定接口并且必须支持多态行为时,使用适配器。另一方面,当需要更简单或更简单的界面时,使用外观。

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

答案 1 :(得分:1)

Facade Pattern是设计模式。所有设计模式都是抽象。这里真正的问题是"什么是抽象?"。

抽象是指隐藏一些细节。例如,您可能有一个应用程序,其中包含针对每个域模型的服务(例如,用户,项目,操作等)。您希望您的API的消费者不必知道该细节(即担心获得正确的服务,如何一起使用它们等),因此您建立了一个" facade",这只是一个服务,可以完成所有其他服务所做的一切,但是在一个界面中。这是一个抽象,因为Facade用户不知道有N个服务,他/她也不关心如何使用它们,因为他/她只是使用统一的实现。

抽象细节,使用设计模式。

答案 2 :(得分:0)

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

Facade.GetUserDetails()

执行检查以查看是否存在数据库连接,如果用户不在缓存等中

另外,取决于门面的类型

IFACADE         - >网球:IFACADE         - > SQUASH:IFACADE

这里可以利用抽象和立面的力量......