有读者讲“侵入式”这一术语无法理解,这里给一个简单解释,是我个人的看法。
在设计一个类时,按理说,需要考虑的应该只是该类所企图表示的那个“概念”本身:为表示有关概念应记录哪些信息,该类的对象与外界交换信息的界面等等。但定义这个类并不是为了放在那里观赏,而是为了使用。在考虑类对象的使用时,使用环境的一些要素就可能“侵入”这个类的设计之中。实际上,许多情况下我们常常可以在“侵入式”设计和“非侵入式”设计之间做一个选择,不同选择各有优缺点。在考虑非类的程序部分时,这种问题也同样存在。
例如,我们可能需要对类A的对象做引用计数,这里有两种基本可能性:将计数功能纳入类A的设计内(侵入式引用计数设计,此时类A的对象中包含了与引用计数有关的要素,这显然是与类A所要表示的概念无关的东西),或者将计数功能放在类A之外(非侵入式引用计数)。
本书中讨论容器时提出了“侵入式容器”设计和“非侵入式容器”设计的概念:当我们希望将类A的对象放入一种容器时,是否需要将该容器的实现要素“侵入”类A的设计实现之中(这显然是与类A本身并无必然关系的要素)。不同考虑导致不同的容器设计。
我基本上知道了,从夏大虾得著作中得知。
比如struts,需要继承一些struts得类,这就是侵入式,使得系统离不开那个框架。
而spring中,业务类不需要继承框架得类,将来抛弃spring也比较方便。
楼上大虾(土豆块)能否谈下ejb与spring之间得关系。你用ejb吗?如果用了,感觉如何?
非侵入式(non-intrusive)设计是目前非常热门的话题。在一般的讨论中,非侵入式设计总是和Spring这样的IoC容器或者AOP技术联系在一起。但是从思想上说,non-intrusive并不等价于IoC或者AOP,它是一个比AOP更加宽泛的概念。
首先,我们考察一下何谓intrusive。典型的intrusive实现是继承特定的基类, 或者实现特定的接口. 在抽象的意义上说, intrusive意味着在基础结构中预留了一些特殊的,专用的结构, 这些结构对于基础功能而言不仅仅是无用的, 甚至是有害的, 例如影响性能或者模糊了原有的概念结构, 而系统整体的后期扩展能力也受到这些预设的结构通道的限制.
non-intrusive设计的基本特点是尽量利用基础结构的元素, 而不是引入额外的特殊结构.例如, 在witrix平台的tpl模板中
<button tpl:tag="ui:FlatButton" value="xx" onclick="alert('ok')" />
如果后台tpl引擎不解析<ui:FlatButton>标签, 那么该标签的表现就是普通的html button. 这里整个页面的界面表现结构没有被tpl标签所破坏,而如果像jsp tag那样强行规定必须采用节点语法, 即
<ui:FlatButton value="xx" onclick="alert('ok')" />
则在没有tpl引擎的情况下, 界面结构被tpl标签所破坏,此时在dreamweaver这样的可视化工具中我们无法再识别出有效的界面元素, 丧失了WYSIWYG编辑的能力.
tpl:tag属性属于html语法本身规定了的自定义属性, 它在html中的存在是符合规范的, 而且它对于button来说没有造成什么限制或损害, 因而是一种无害的标记. 在没有tpl模板引擎的情况下, tpl:tag属性与其他自定义属性一样处于同样的地位, 没有什么特殊的作用. 而一旦tpl模板引擎识别出该特殊标记, 整个节点就被解释成一个具有丰富表现形式的平面按钮而不是系统缺省风格的普通按钮. 从级列设计的角度上说, button对应于ui:FlatButton在没有tpl解析能力情况时退化了的结果. 在EJB3的规范中, 普通的POJO(Plain Old Java Object)对象在经过无害的标记(annotation)之后通过Enhance过程获得持久化等特性, POJO正对应于EJB Object的退化形式. 在某种意义上我们可以说, 存在着多少种可退化方式,就对应着多少种non-intrusive design。
与传统设计中的结构堆砌不同, 现代技术更加强调在原有结构基础上的同态变化, 关注原有结构中的某些部分出现特殊意义后所产生的对称破缺. 在non-intrusive设计中, 基础的结构中没有为扩展内置什么特殊的结构, 一般仅仅是标记而已, 这些标记是无害的甚至本身在基础结构中是有用的, 例如某些javascript库在前台html页面中利用html标签的class属性作为标记. 为了识别这些属于结构标准部分的标记并对之进行处理,我们需要一种可选择的结构透明性, 具体来说我们需要能渗透到系统内部,准确的定位到标记处. 这就类似于x光检测, x光只与某些特殊材料发生强烈作用而普通部分对于x光而言是透明的. 而当外部引擎识别出这些特殊的标记之后, 可能需要操纵该局部结构, 例如在基础结构中插入一些新的结构以实现基础结构的增强. 这些都可能需要应用类似于AOP的技术, 而在这一增强过程中关于扩展结构的具体知识存在于扩展引擎中而不是基础结构中, 因而往往整体表现出一种IoC的特性.
分享到:
相关推荐
Y系列三相异步电动机是根据我国统一设计的最新系列标准制造的一类电动机,全称为“Y系列全封闭自扇风冷式鼠笼型交流异步电动机”。其防护等级达到IP44,即对固体物体的防护达到4级,对水的防护达到4级,能有效保护...
首先,我们需要理解外包设计的核心含义。外包设计是指企业将产品设计工作委托给专业设计公司或独立设计师,以利用其专业技能和创新思维,提升产品的设计质量和市场竞争力。这种方式可以帮助企业节省内部资源,集中...
这类设备通常具备一个密封的工作腔室,其设计理念是允许外部人员通过特定接口与内部环境隔离进行交互,而这些接口可能是手套操作孔或机械手臂。工作腔室内部可以精确调控环境参数,如温度、湿度、二氧化碳(CO2)...
焊接时应防止重压,避免助焊剂侵入电位器内部,否则会导致电刷与电阻体接触不良,产生杂音。 3. 接线方式:电位器最好应用于电压调整结构,而且通常选择“1”脚接地。应避免使用电流调整式结构,因为接触电阻不利于...
无创血压测量技术从柯氏音法到示波法,再到动态血压监测,实现了连续、非侵入性的血压监测。脉搏血氧饱和度测量技术经历了光电容积描记法(PPG)的改进,现已成为临床常用的无创、快速检测方法。多生理信号监护仪...
网络阵列式高精度定压导尿装置通过集成了先进的微创技术和非侵入式操作方法,大大提高了导尿过程的精准度和舒适度。此外,由于其高精度和安全性的特点,这种装置有望在减轻患者痛苦的同时,降低医疗过程中的风险。 ...
为了提供更加纯净的下载环境,应当考虑减少或优化广告的展示方式,比如采用非侵入式的广告策略,或者提供无广告版本的软件供用户选择。 优化这些方面可以显著提升Thunder7的用户友好性,使其在竞争激烈的下载软件...
GIF图标作为非侵入式的提示手段,可以避免打断用户的操作流程,同时清楚地传达信息。例如,一个加载中的GIF图标可以表示“请稍候”,一个检查标记的GIF可以表示“成功”,一个错误符号的GIF则可以表示“出错”。 3....
遵循非侵入式原则,设计优雅或简单,极易上手 在项目初始化阶段采用ASM生成好字节码,因此支持编译前预备,可替换减少运行期的错误,显着提升程序的强壮性 支持安全查询,防止SQL注入 支持与主流数据库连接池框架...
ARM7TDMI提供了ICE-RTX(In-Circuit Emulator-Real-Time eXtension)监控工具,这是一个实时监控工具,可以实现在目标系统上无侵入式的调试。 #### 内置乘法器 ARM7TDMI内置了硬件乘法器,这对于需要进行大量数学...
透明模式让《牛逼的串口监视器》成为一款非侵入式的工具,它不会影响原有的设备通信过程。此外,软件对波特率的支持广泛,常见波特率如9600、19200、38400等都可被轻松设置,满足了不同设备的通信需求。开发者还可以...
Emotiv EPOC是一款非侵入式的消费级脑电图设备,用于捕捉和分析大脑的电信号,为研究者和开发者提供了探索人类大脑功能的新途径。 **1. Emotiv EPOC EEG耳机介绍** Emotiv EPOC是一款14通道的EEG耳机,能够实时记录...
在脑机接口(BMI,Brain-Computer Interface)领域,SSVEP被广泛应用于设计非侵入式的控制策略,因为它能提供快速且可靠的用户响应。 **脑电(EEG)** 是记录大脑电活动的技术,通过在头皮上放置电极来捕捉大脑的...
13. **交互操作**:在.NET与非托管代码交互时,遵循正确的互操作规则。 总之,遵循这些编码规范可以帮助开发者创建高质量、安全且易于维护的代码示例,这对于促进团队合作和提高整体项目的成功率至关重要。
1. **非侵入式设计**:Spring 应用中的对象可以独立于Spring的API,这使得业务逻辑代码更加纯粹,减少了对框架的依赖。 2. **控制反转 (IOC)**:IOC 是Spring的重要概念,它将对象的创建权从代码转移到Spring容器...
这可能意味着Onelooker的设计旨在提供一种非侵入式的搜索体验,让用户能够在使用其他应用程序的同时,轻松查找和学习新词汇。 标签“C#”表明Onelooker是用微软的C#编程语言编写的,这是一种面向对象的、类型安全的...
在现代电子产品设计与制造领域中,防水性能已成为衡量产品质量的关键指标之一。特别是在户外运动装备、汽车电子设备以及工业自动化设备等领域,良好的防水性能不仅能保障设备在恶劣环境下的正常使用,还能延长其使用...
这些产品可能经过精心设计,以适应各种类型的网站,如博客、电子商务平台、新闻门户等,旨在通过有效的广告策略来增加收益,同时也注重网站的加载速度、响应式设计以及对SEO的友好性。 【标签】"网页模版"说明了这...
库卡系统软件(KUKA System Software,简称KSS)是专为库卡机器人设计的一套操作系统,旨在为用户提供高效、直观的机器人编程与操作体验。该指南主要介绍了KSS 5.2、5.3、5.4三个版本的操作及编程方法,适用于最终...
然而,"后门"一词也带有负面含义,因为它可以被恶意黑客用来非法侵入系统,因此正确使用和保护后门至关重要。 服务器后门软件的主要功能包括: 1. 远程访问:后门程序提供了一种方法,使得管理员可以在任何地方...