由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - 四种调用未知类方法的方法
相关主题
Questions on EJB3 Persistence/Hibernatej2ee, j2me, j2se 现在哪个用得多?
j2ee现在流行什么?唉进了一家烂公司
JAVA技术更新太快了!多个Log4J配置文件问题
问问java认证J2EE入门
hibernate和ejb3when will ejb3 reach final release?
any good j2ee book?Any good book recommendation for EJB?
新手学习java spring, hibernate或者struts的问题怎么能学成J2EE的全能
[求助]实在不明白transaction,ejb这些概念有多少人对annotation这个东西不满,请举手!!
相关话题的讨论汇总
话题: 张三话题: 方法话题: 注释话题: spring话题: 虚拟
进入Java版参与讨论
1 (共1页)
z****e
发帖数: 54598
1
比如说我想要让张三给我写一个类
我去调用张三写好的类里面的方法
但是有个问题,就是我怎么调用张三写的类的方法呢?
张三的类还没写呢,我跟张三只有一个约定
我只能知道张三将来要写好的类的方法
但是我现在要用,如果我等张三写好了类我再开始写的话
效率就非常低了,那当我只有跟张三的约定的前提下
我该怎么做才能使得张三写出符合我标准的代码?
四种方法
第一种是我写好一个虚拟类,让张三去继承这个虚拟类
去实现我定义的虚拟方法
第二种也是最常用的一种,就是用接口
同样也是让张三去实现我在接口中定义的虚拟方法
其实在java1.4左右,大部分的框架和标准都是基于这个模式的
尤其是ejb,近乎癫狂地使用了各种乱七八糟的接口
而表示层的框架和标准则全面采用虚拟类
比如struts1.x的版本,还有servlet
其实这样做其实也不是很难就是了,无非就是实现一堆的虚拟方法
而且多数时候可以用ide的模板代劳,按几个按钮就是了
但是即便如此,张三还是觉得很难接受这么苛刻的要求
因为能把这些方法解释清楚的人实在是不太多
这是jee第一代
后来出现了一个东西叫做反射
当反射刚出现的时候,效率比较低,后来优化了之后,效率大幅提升
基本上感受不到用反射和不用反射之间的差异
于是人们开始简化,这个时候出现了一个东西叫做spring
spring率先实现了所有的相关类不再需要继承各种接口或虚类
嗯,好吧,就算不是所有,也可以说是大部分吧
因为反射机制的一个优点就是,对于不同的类和不同的方法,它可以用一个统一的方法
调用
而张三需要做的,就是在配置文件比如xml里面让张三把这些类给写上去
告诉框架这些类是什么,同样我也只需要告诉spring我要什么方法就行了
剩下的交给spring,类似的还有hibernate,也是这种机制,所不同的是,hibernate更
傻一些
因为它不负责把类塞给我,要我自己去向hibernate要
这是第二代,不需要去继承各种乱七八糟的接口和虚类是一大进步
因为对于张三来说,他不再需要去理解那些虚方法的目的
减少了遵循各种规则的要求,自然也就减少了出错的概率
这样做对张三来说其实已经很简单了,但是我们还可以更简单
到jdk1.5之后,出现了一个东西,叫做注释
我依稀记得,当注释出现的时候,国内的技术文章抄来抄去
总之是一片批驳之声,说这个东西没什么意义云云
现实给了这些装逼犯一巴掌,几乎所有的框架和标准,ejb也好,spring也好,
hibernate也罢
集体转向注释,而事实也证明,用注释来标识用户写的方法会更容易一些
简单说,注释也就是说,连配置文件都省了,张三要做的
就是在写好类之后,在类上面标识一下,写清楚这是什么
然后spring等可以通过注释会自动搜索已经写好的类里面的标识,然后自动匹配
可以说这是第三代,不出意外的话,这个做法将会最终稳定下来并持续很长一段时间
回头看,第三代可以说是大大方便了张三的操作
连配置文件都省了,因为写xml需要遵循dtd,schema等乱七八糟的
有时候也挺烦的,写注释应该是最简单了,只需要标识一下就行了
当然这还是比较理想的状况,目前还没有完全实现
现在看这个走势应该已经很明了了,最终全面走向annotation是必然的结果
所以讲起来,对于使用者来说,java真正要认真捣腾的除了jdk1.4.2之外,也就只有1.
5的注释了
注释不会估计有些难混,其它其实没什么,这么多年了也就加了这么一个要求
但是如果你是写框架的,写软件服务器,写引擎等系统软件的,那又是另外一个故事了
r*****l
发帖数: 2859
2
It makes sense to compare: interface vs abstract method, direct invocation
vs reflection, xml configuration vs annotation. However, mixing them
altogether is somewhat confusing.
For example, Spring uses reflection a lot for injection purpose. But most
business API/calls still rely on interface and/or abstract class. EJB3
injection too. Inheritence is an essential part of OO and it will not go
away.

[发表自未名空间手机版 - m.mitbbs.com]

【在 z****e 的大作中提到】
: 比如说我想要让张三给我写一个类
: 我去调用张三写好的类里面的方法
: 但是有个问题,就是我怎么调用张三写的类的方法呢?
: 张三的类还没写呢,我跟张三只有一个约定
: 我只能知道张三将来要写好的类的方法
: 但是我现在要用,如果我等张三写好了类我再开始写的话
: 效率就非常低了,那当我只有跟张三的约定的前提下
: 我该怎么做才能使得张三写出符合我标准的代码?
: 四种方法
: 第一种是我写好一个虚拟类,让张三去继承这个虚拟类

1 (共1页)
进入Java版参与讨论
相关主题
有多少人对annotation这个东西不满,请举手!!hibernate和ejb3
Ejb 3.0 deployment descriptor?any good j2ee book?
Spring 工作机会好象不多啊!新手学习java spring, hibernate或者struts的问题
EJB里面要使用一个另外jar包里面的classes怎么设置?[求助]实在不明白transaction,ejb这些概念
Questions on EJB3 Persistence/Hibernatej2ee, j2me, j2se 现在哪个用得多?
j2ee现在流行什么?唉进了一家烂公司
JAVA技术更新太快了!多个Log4J配置文件问题
问问java认证J2EE入门
相关话题的讨论汇总
话题: 张三话题: 方法话题: 注释话题: spring话题: 虚拟