- 浏览: 111576 次
- 来自: ...
文章分类
最新评论
Interface在OO中处于核心地位,针对接口编程更是OOP的核心原则之一,但即使将该原则贯彻到底的COM/CORBA,依然面对大量的依赖、耦合,牵一接口而动全部客户的修改
另一方面,Hurb Sutter说各种编程范式,包括面向对象,核心都是某种管理依赖性,降低依赖性的技术,那么.Net Attribute, XDoclet, Java Annotation代表的Attribute Oriented Programming在降低依赖性上又前进了多少呢?
以Java Annotation为例,与Java Interface做个对比
1,调用方式
Call by Signature:就像现实生活中的螺丝螺母,插座插头,必须完全吻合 | Call by Semantics:就像卡西利亚斯被罚下,临时指定肥罗当守门员一样,肥罗并不需要实现GateKeeper接口,只需临时被标记为具有GateKeeper属性,便可以合法的禁区内手球 |
2,名称冲突(可看作是对函数签名的依赖,当然,无论Annotation还是Interface,都不允许存在完全相同的全名)
Yes,无法解决从多个接口继承来的方法具有相同签名不同语义的问题 | No,Annotation是类型,不会存在完全相同的全名 |
3,编译时依赖(对Annotation或Interface的依赖)
Yes | Yes | No,只要“被Annotation标注的类”已经被编译为bytecode,如以jar包的形式存在,那么使用了该类,但没有用到Annotation的客户,编译时不需要依赖Annotation所在的Jar包 | Yes | Yes | Yes,即使客户没有用到该类所实现的所有接口,编译时该类涉及的所有接口的定义必须可见 |
4,运行时依赖(对Annotation或Interface的依赖)
No(即使RetentionPolicy是RUNTIME,我的测试中也是不依赖Annotation的,只要客户不涉及Annotation,但我不确定RUNTIME的真正含义是什么) | Yes | No(其实运行时对Annotation的依赖被转移到了客户) | Yes | Yes | Yes |
5,对Annotation或Interface本身更改的依赖
Yes | Yes | No | Yes | Yes | No |
6,对“被Annotation标注的类不再被标注”或“实现Interface的类不再实现Interface”这类更改的依赖
Yes | No | No | Yes | Yes | No |
总共 5 处被蓝色字体标注的地方,也就是Annotation在降低依赖性上优于Interface的 5 个方面,也算更接近于“你不需要为你用不到的东西付出代价”这一语言和库的设计理念
当然,Annotation有其它的代价,几个潜在的可能就是“使用方便性”和“性能”
发表评论
-
The Object Primer
2004-12-11 11:21 5501,书名 被翻译成“ ... -
错误处理规范
2004-12-11 16:47 729错误处理规范 〇、概念澄清 概念 解释 错误 ... -
Java,误解为何如此之深
2005-08-24 13:50 565前几天被电话面试,问J ... -
Java:画蛇添足的编码规范
2005-09-02 13:13 546前几天公司培训编码规范: 第n条: ... -
synchronized : 规则, 推论与实践
2007-07-23 22:32 43014.3.Synchronization. Rule ... -
交互设计: 股市帮凶
2008-05-04 21:30 613同事 Y 在线操作股票时, 把"买入"点成 ... -
交互设计: 火车上的厕所
2008-05-26 17:17 578有人在动车组的厕所前等了很久, 直到乘务员路过说厕所是被锁住了 ... -
设计原则与模式: 案例介绍--CppUnit
2008-06-01 20:15 572设计原则与模式: 案例介绍--CppUnit CppUnit ... -
工作流:形参,实参,相关数据
2004-12-11 11:40 630关于形参,实参,相关数据 一、形参(FormalParame ... -
工作流:第一次发版,过程总结
2004-12-11 11:42 670交流 即时讨论:小组成员咫尺之遥,有问题立即提出并解决 ... -
工作流:第一次发版,设计总结
2004-12-11 11:43 581整体 面向接口:消息系统,持久系统等,其实现都是可替换 ... -
Beyond Workflow : An Introduction to Vitria BusinessWare
2005-09-26 10:13 780一、简介 Busines ... -
Vitria BusinessWare: 存储与访问安全
2006-03-26 15:45 713事实上,BusinessWare使用LDAP做为存储机制和 ... -
Vitria BusinessWare: 平台与软件总线
2006-04-01 12:59 783经过一段时间的使用 ... -
Vitria BusinessWare: Web Services
2006-04-01 14:30 709BusinessWare的Web Services ... -
Web Services:自洽,编码,交换模型
2006-04-01 16:02 6211, 自洽 以前曾经写过: 目前WebServi ... -
Web Services:WSDL 1.1 规范中的几个错误
2006-04-01 16:40 685读完了WSDL 1.1的规范,令人惊讶的是发现似乎例子中有几个 ... -
C++/CLI:被忽视的集成技术
2006-05-17 20:02 718十几行代码,就使一个重要的旧系统组件,完全融入了基于.Ne ... -
AJP/JK:异构Web平台的集成技术
2006-05-25 21:44 670Tomcat Connector 可以将Tomcat ... -
Vitria BusinessWare: 事件与端口
2006-05-27 17:24 596Event BusinessWare是一个事件驱动的系统 ...
相关推荐
赠送jar包:jakarta.annotation-api-1.3.5.jar; 赠送原API文档:jakarta.annotation-api-1.3.5-javadoc.jar; 赠送源代码:jakarta.annotation-api-1.3.5-sources.jar; 赠送Maven依赖信息文件:jakarta.annotation...
赠送jar包:javax.annotation-api-1.2.jar; 赠送原API文档:javax.annotation-api-1.2-javadoc.jar; 赠送源代码:javax.annotation-api-1.2-sources.jar; 赠送Maven依赖信息文件:javax.annotation-api-1.2.pom;...
赠送jar包:jakarta.annotation-api-1.3.5.jar; 赠送原API文档:jakarta.annotation-api-1.3.5-javadoc.jar; 赠送源代码:jakarta.annotation-api-1.3.5-sources.jar; 赠送Maven依赖信息文件:jakarta.annotation...
赠送jar包:javax.annotation-api-1.3.2.jar; 赠送原API文档:javax.annotation-api-1.3.2-javadoc.jar; 赠送源代码:javax.annotation-api-1.3.2-sources.jar; 赠送Maven依赖信息文件:javax.annotation-api-...
Spring Annotation
@androidx.annotation.NonNull 缺失的兼容、androidx.annotation兼容包
javax.annotation-3.0.jar javax.annotation-3.0.jar javax.annotation-3.0.jar
Java annotation 什么是java annotation?annotation 的7种标注类型。nnotation提供了一条与程序元素关联任何信息或者任何元数据(metadata)的途径。从某些方面看,annotation就像修饰符一样被使用,并应用于包、...
Annotation核心技术Annotation核心技术Annotation核心技术Annotation核心技术Annotation核心技术Annotation核心技术
这里面包涵了需要用Hibernate Annotation时,所需要的所有jar包! 现在我们公司在做web项目的时候,已经不用*.hbm.xml这种映射文件了,都是用Annotation(注解)方式来完成实体与表之间的映射关系,这样看起来比用...
Annotation权威资料 Annotation权威资料 Annotation权威资料 Annotation权威资料 Annotation权威资料 Annotation权威资料Annotation权威资料
hibernate annotation hibernate3
annotation详解 讲解annotation的使用 教程
hibernate annotation中文文档
hibernate 注解 annotation 教程
赠送jar包:geronimo-annotation_1.0_spec-1.1.1.jar; 赠送原API文档:geronimo-annotation_1.0_spec-1.1.1-javadoc.jar; 赠送源代码:geronimo-annotation_1.0_spec-1.1.1-sources.jar; 赠送Maven依赖信息文件:...
JDK9及以上版本没有javax.annotation-api-***.jar包 ,无法使用注解:@Resource JDK新特性,高版本JDK没有自带的javax(java扩展包)了。或者是使用的JDK不完整。 下载javax.annotation.jar包,导入到lib文件夹下,...
Java 5 annotation 学习笔记Java 5 annotation 学习笔记Java 5 annotation 学习笔记
compass annotation关联关系
Java-Annotation使用大全 Java-Annotation使用大全 Java-Annotation使用大全