chr*_*ris 4 design-patterns facade
我们团队中的另一个人为我的Web框架提供了一个库作为jar.我们称这个框架为"我朋友的框架".
我需要从他的框架中获得一个特定的类.该类暴露的一半属性是我自己应用程序所需要的.另一半不需要.要检索此类的属性,您需要执行一些String操作.由于我将在这个类的基础上开发我自己的框架,我想尽可能地分离依赖.也许在未来,我的另一位朋友将开发出更好的框架.
所以我做的是为该课程生成了一个外观类.我自己的框架通过我的facade类访问属性.如果"我的朋友的框架"确实改变了,我只需改变一个门面类,其余的保持不变.此外,String操作在facade类中完成.此外,facade类仅公开所需的属性.所以我自己的框架只是作为普通的getter/setter访问属性.
但是,我和这个家伙有争执.他迫使我直接使用他的班级,因为他首先不会改变他班级的实施.所以他告诉我,写一个门面课真的没有价值.但我不同意.
我错了吗?我确实相信我是对的.
hvg*_*des 11
原则上你没有错.
你错了,你所做的不是门面.Facade更常用于您拥有带有一堆服务的API的情况.您可以将所有这些服务一起使用,但这可能会变得复杂.该模式是站立一个单独的API接口,即Facade,它将服务调用协调为可用的逻辑操作.
你正在做的更像是适配器模式.您正在通过在其前面放置另一个类来使他的类适应您的用例.
注意,我只是指出一个语义问题,在实践中你所做的是一个很好的设计实践.
另请注意,如果您真的不打算将来更新,那么您可能不需要经历麻烦.也许YAGNI - 你不需要它.