论坛首页 Java企业应用论坛

如何建立动态的依赖关系

浏览 1965 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-03-30  
在某些时候,我们需要根据业务需求来动态的建立某些类的多个实例,而这些类是由用户自定义的。例如:在网络编程时,对客户端每次向服务端发起的TCP请求,在服务端都会建立Socket,用户对该Socket进行包装,形成类A。因此对于客户端的每次请求在服务端都有与A相应的实例。
但是类A又依赖于多个属性,是否需要队列来处理Socket,A所对应的Socket端口是多少。因此问题是:如何在服务端创建A的实例,然后将已定义好的属性注入到A中?

解决方法之一:
(1)基于Spring,将创建A的类称为W,作为Spring的一个bean;
(2)A的“包名+类名”作为W的String属性;
(3)A所依赖的队列和Socket端口等属性定义为一个属性集合Map,该Map作为W的一个属性。

在W运行时,对于每个客户端向服务端发起的请求,都会利用反射建立A的实例,然后将W的属性Map通过调用A的setMap方法将这些属性传递到A的实例中。

缺点:(1)W包含了对A的属性的依赖,破坏职责单一性。
      (2)在实现A时,需要实现setMap方法,处理由A传递过来的参数。分散A的业务职责。
      (3)Map的key在编译时不能进行检查。

有没有更好的方法解决这个问题呢?
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics