浏览 455 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-03-30 关键字: 设计模式 反射 spring
在某些时候,我们需要根据业务需求来动态的建立某些类的多个实例,而这些类是由用户自定义的。例如:在网络编程时,对客户端每次向服务端发起的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在编译时不能进行检查。 有没有更好的方法解决这个问题呢? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |



