NULL_8757512 2008-07-11 09:06
浏览 392
已采纳

业务层中管理Server的Server是干嘛用的

[img]http://p.blog.csdn.net/images/p_blog_csdn_net/iamzealotwang/426157/o_pic1.jpg[/img]

[img]http://s17.divshare.com/files/2008/07/10/4917109/pic1.jpg[/img]

图片要是看不到,请刷新尝试一下,因为实在找不到好的外链空间。。。

在业务层定义了2个Server

CatalogService

UserService

这两个都好理解,问题出在

servicelocator 这个server 上面

public interface ServiceLocator
Interface needs to be implemented by ServiceLocator.
ServiceLocator is used to lookup for business services.

Method Summary

getCatalogService()
Get the CatalogService.
getUserService()
Get the UserService.

我想问一下定义这个servicelocator有什么用处么?

比如
UserBean里面的loginAction()
调用还需要:
User user = this.serviceLocator.getUserService().login(this.username, this.password);

要是不要servicelocator的话 直接this.userservice.login(this.username, this.password);不是挺好的么?

你说要是为了以后的扩充用,可是里面定义的接口就两个

getCatalogService() 和 getUserService() 感觉完全没有用处啊。

[b]问题补充:[/b]
====================补充========================

您好,您的意思我明白。

我是不是可以这样理解,如果使用了loc 这个Server也就没有存在的意义了,是这个样子的么?
要是这样的话,是使用loc好一些 还是手工编写这个Server好呢?

我看的是Put_JSF_ToWork 在他里面给出了一个ServiceLocator的impl 实现了

您说的那个方法

public Object lookupService(String serviceBeanName) {
return appContext.getBean(serviceBeanName);
}

按照这个函数,加入我添加了一个ServerA ,其中有一个方法B()

那我在调用的时候

A a = this.serviceLocator.lookupService(ServerA).####

那块####应该怎么写呢?

谢谢。

  • 写回答

2条回答 默认 最新

  • lggegegmail 2008-07-11 09:20
    关注

    其实, 想法是好的, 就是统一管理获取具体功能类的方式.

    假如说: UserService的实现是RMI的, 那么, 就可以将具体查找的逻辑隐藏在ServiceLocator里面了.

    还有, 你说直接的this.userservice, 这样做的前提是你依旧要去找到这个userService实例. [或者由Ioc容器帮你注入了, 不用再自己做手动的查找.] 如果,你要手动查找, 最佳实践还是会统一由一个ServiceLocator去查找的.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?