适配器模式在不同接口方法具有不同参数的情况下是否可用
我正在创建一个客户端 Swing 应用程序,该应用程序将包含由许多数据提供商(经纪人)之一提供的数据。然而,数据提供者有不同的方式来执行相同的事情,例如
broker1的登录方法
public boolean doLogin(String username, String password);
broker2的登录方法
public int login(String username, String password,String sessionId);
对于所有提供者,所需的操作集是相同的 例如
登录、getstatus、sendRequest、getData、logOff
(但它们有不同的参数和返回类型)
我查看了适配器模式,但不幸的是我无法很好地使用它,因为所需的方法有不同的参数。
在这种情况下可以使用适配器模式吗?如果是这样怎么办?
如果不是,最好的方法是什么?
谢谢。
I am creating a client side swing app that will have data provided by/from one of many data providers(brokers). The data providers however, have varying ways of perfoming same things e.g.
broker1's login method
public boolean doLogin(String username, String password);
broker2's login method
public int login(String username, String password,String sessionId);
For all providers the set of required actions is the same
e.g
login, getstatus, sendRequest, getData, logOff
(but they have different params and return types)
I took a look at the adapter pattern but am unfortunately not able to use it well as the required methods have different parameters.
Is the adapter pattern usable in this case? if so how?
If not what would be the best way of doing this?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
模式是最佳实践的一般准则(起点)。许多开发人员根据自己的需要“调整”模式;那么重要的是,如果您必须使用某种模式,请在整个应用程序中一致地使用它。
现在,回答你的问题;是的,适配器模式非常适合您的情况。一个可能的解决方案(类似)可能是:
然后
或
当然这是一个非常通用的方法。如果您知道一个方法将接收所有参数的字符串,您还可以有一个抽象签名,例如:
那么您的具体实现将是:
等等。
Patterns are general guidelines (starting point) of best practices. Many developers "adapts" the patterns to their needs; the important thing is, then, if you must use a pattern, use it consistently throughout your whole application.
Now, to answer your question; yes the adapter pattern can very well be used in your situation. A possible solution (in the like) could be:
Then
Or
Of course this is a very general approach. If you know that one method will be receiving strings for all parameters, you could also have a abstract signature like :
Then your concrete implementation would be :
etc.
我的第一个想法是研究 外观模式,在我的 'Head First Design Patterns'一书,与适配器在同一章中进行了解释,并与远程控制进行了比较用于家庭影院组件。
这个外观将位于客户端应用程序和各个代理之间。因此,客户端不必关心哪些经纪人以及有多少经纪人属于“剧院”,只需“按下登录按钮”和“所有经纪人连接都已打开”。
My first thought was looking into the facade pattern, which, in my 'Head First Design Patterns' book, is explained in the same chapter as Adapter and compared with a remoted control for home theatre components.
This facade would sit between the client app and the various brokers. So the client wouldn't have to care, which and how many brokers are part of the 'theatre', it just have to 'press the login button' and 'all broker connections are switched on'.