java中的外观设计和抽象有什么区别? 我觉得它就像java中的接口一样简单,并且用于相同的目的。
我看到更多关于人们说它是客户端的第一个联系人,隐藏了更多的接口和类。但以上所有也是接口的目的。!!!
在这里感到困惑!!!!!!请举一个小例子来帮助我。
感谢, Punith
答案 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
这里可以利用抽象和立面的力量......