`
chillwarmoon
  • 浏览: 155310 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何建立动态的依赖关系

    博客分类:
  • work
阅读更多
在某些时候,我们需要根据业务需求来动态的建立某些类的多个实例,而这些类是由用户自定义的。例如:在网络编程时,对客户端每次向服务端发起的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在编译时不能进行检查。

有没有更好的方法解决这个问题呢?
分享到:
评论

相关推荐

    创建你的CommonJSAMD或ES6模块依赖的关系图

    本篇文章将详细介绍这三种模块规范,并教你如何创建它们的依赖关系图。 首先,让我们从CommonJS开始。CommonJS是Node.js采用的模块规范,它允许你在服务器端使用JavaScript编写模块化代码。CommonJS的核心思想是`...

    基于依赖的网络化制造动态联盟合作伙伴组合选择

    通过协调理论,可以建立起协调机制,以管理不同业务活动之间的依赖关系,从而实现业务活动之间的相互协调。 再次,本文提出的基于依赖的网络化制造动态联盟合作伙伴组合选择方法,特别考虑了企业间的相互依赖和排斥...

    依据程序依赖关系匹配度的C语言程序设计题评分方法 (1).pdf

    基于程序依赖关系匹配度的评分方法,意在通过建立考生程序与标准答案之间的依赖关系图,进而分析这两个图的匹配程度来给出分数。这种方法的优势在于能够更准确地捕捉程序逻辑结构的细节,对于理解考生程序的实际运行...

    速度与状态依赖性摩擦本构关系下-速度与状态依赖性摩擦本构关系下双滑块系统的相互作用.rar

    1. **模型建立**:首先,需要建立双滑块系统的动力学模型,包括滑块的质量、初始位置、速度以及摩擦本构关系的数学表达式。 2. **状态空间表示**:将模型转换为状态空间形式,以便于使用MATLAB的ODE求解器进行数值...

    行业分类-外包设计-基于递归在线算法的进程任务块可疑依赖关系的优化方法的说明分析.rar

    1. **依赖关系建模**:首先,需要识别和建立任务之间的依赖图,这可以通过监控系统事件和通信来实现。 2. **在线检测**:利用递归算法,系统在运行过程中持续检查依赖关系,一旦发现可疑依赖,立即进行分析。 3. *...

    关于AssetBundle打包的依赖收集1

    然而,正确管理和打包AssetBundle并非易事,尤其是处理资源之间的依赖关系。本文将深入探讨AssetBundle的依赖收集以及如何避免资源冗余。 Unity 5.x版本之后引入了自动分析依赖的功能,系统会基于AssetBundleName来...

    基于搜索的依赖关系解析动态重排模型

    依赖关系解析是计算机语言学中的一项关键技术,它旨在找出句子中词语之间的直接依赖关系,并建立一棵依赖树来表示这些关系。这在机器翻译、情感分析、问答系统等任务中有着广泛的应用。 本研究论文介绍了一种新颖的...

    动态链表的建立

    在建立动态链表的过程中,我们需要了解以下几个关键概念和步骤: 1. **节点结构**:首先,定义一个结构体来表示链表的节点。这个结构通常包含两个部分:存储数据的数据域和指向下一个节点的指针域。例如,在C语言中...

    简单的Java依赖注入框架,代码量少,实现了依赖注入和AOP。适合Spring源码的初学者掌握其核心原理.zip

    Spring框架是Java领域中最著名的DI框架之一,它提供了一个强大的IoC(Inversion of Control,控制反转)容器,负责创建对象、管理对象的生命周期以及建立对象间的依赖关系。在Spring中,我们可以通过XML配置、注解...

    利用FLEX技术建立服务器关系图

    数据库中的表结构应当包括服务器的基本信息(如名称、类型、IP地址等)以及服务器间的关系(如依赖关系、调用关系等)。 2. **数据获取**:通过ASP.NET或其他后端技术读取数据库中的服务器关系数据,并将其转换为...

    Qt6.2依赖的mysql动态库

    标题"Qt6.2依赖的mysql动态库"指出,我们关注的重点是Qt6.2与MySQL数据库之间的交互,尤其是依赖的动态链接库。动态库(Dynamic Link Library,简称DLL)允许多个程序共享同一段代码,从而节省内存并便于更新。 ...

    依赖属性学习代码

    依赖属性是WPF(Windows Presentation Foundation)框架中的一个重要特性,它允许控件和其他UI元素的属性之间建立直接的依赖关系,使得属性值的更改能够自动传播到相关联的组件。这个概念是WPF数据绑定和MVVM(Model...

    在电子商务环境下的动态客户关系管理策略外文翻译.doc

    售后阶段,则强调通过持续的客户服务和反馈,建立长期稳定的客户关系。 关键词:动态客户关系管理;企业竞争;电子商务;模型;企业对消费者(Business-to-Customer,B2C) 1. 引言 CRM已经成为市场营销学术界和...

    范文1 酒管学院_20101409064_邱丽_大学生手机依赖现状与孤独感、社会支持的关系研究.zip

    10. **理论框架**:作者可能构建了一个理论模型,用以解释手机依赖、孤独感和社会支持之间的动态关系,为理解和解决这一问题提供理论依据。 通过这篇研究,我们可以深入理解手机依赖对大学生心理健康的影响,以及...

    模式映射弱依赖的XQuery到SQL转换算法.pdf

    GVRS模型作为XML实例文档和实际关系数据库(RDB)之间的桥梁,减少了动态查询对静态模式映射的依赖性。这保证了动态查询的通用适应性。通过降低动态检索对静态模式映射的依赖性,可以有效避免不同供应商间因技术依赖...

    动态copula

    Copula函数作为一种连接边际分布与联合分布的数学工具,在处理变量间的依赖关系时展现出了独特的优势。随着金融市场复杂性的增加,传统的静态Copula模型已经难以满足实际需求,因此动态Copula模型应运而生。 #### ...

    android 动态添加删除的Spinner菜单 ArrayList与Widget的依赖性

    本主题将深入探讨如何在Android应用中动态地添加和删除Spinner菜单,以及ArrayList和Widget之间的依赖关系。 一、Spinner的基础知识 Spinner是Android SDK中的一个视图组件,继承自AdapterView,它可以通过一个...

Global site tag (gtag.js) - Google Analytics