【发布时间】:2010-12-10 16:44:31
【问题描述】:
我们团队的另一个人为我提供了一个库作为他的 Web 框架的 jar。我们称这个框架为“我朋友的框架”。
我需要他的框架中的一个特定类。该类公开的一半属性是我自己的应用程序真正需要的。另一半不需要。要检索此类的属性,您需要进行一些字符串操作。因为我将在这个类之上开发自己的框架,所以我想尽可能多地解耦依赖。也许将来我的另一个朋友会开发一个更好的框架。
所以我所做的是为该类生成了一个外观类。我自己的框架通过我的外观类访问属性。如果“我朋友的框架”确实改变了,我只需要改变一个外观类,其余的保持不变。此外,字符串操作是在外观类内部完成的。此外,外观类仅公开所需的属性。所以我自己的框架只是像普通的 getter/setter 一样访问属性。
但是,我和这个人发生了争执。他强迫我直接使用他的课程,因为首先他永远不会改变他的课程的实现。所以他告诉我写一个门面类真的没有任何价值。但我不同意。
我错了吗?不过我相信我是对的。
【问题讨论】:
-
“他强迫我直接使用他的课”。如何?他在给你打代码吗?
-
我认为你是对的。听起来你是更聪明的开发人员(如果,也许,给自己做一些额外的工作)。 hvgotcodes 的答案涵盖了我可能说的所有内容。我们一直将 API 封装在适配器类中——这次唯一奇怪的是你的朋友正在编写它。
-
是的,您实际上是在对接口进行编码,然后为他的组件编写适配器。听起来不错。但是,(可能是由于“属性”的模糊概念),您可能希望接口不仅仅是 getter 和 setter ......只是一个想法......