Redian新闻
>
维京太空母船“白色骑士二号”圣诞前首航
avatar
维京太空母船“白色骑士二号”圣诞前首航# Aviation - 航空航天
z*e
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的注释了
注释不会估计有些难混,其它其实没什么,这么多年了也就加了这么一个要求
但是如果你是写框架的,写软件服务器,写引擎等系统软件的,那又是另外一个故事了
avatar
Z*R
2
2008年12月16日 16:52:09  来源:新浪科技
北京时间据英国《新科学家》杂志16日报道,英国维京集团旗下的“维京银河”太
空旅游公司的运载飞机“白色骑士二号”将于未来两周上演处女航。此次飞行是这艘母
船计划中的数十次试飞中的第一次,它将成为第一个搭载游客进入太空边缘的私人航天
器。
圣诞节前首飞
在设计上,“白色骑士二号”负责将能够搭载8名乘客的飞船“太空船二号”送入
15 公里的高度。达到这一高度后,“太空船二号”将脱离“白色骑士二号”同时点燃
火箭,最终将乘客送入地球上空大约100公里的区域。在这一区域,他们将感受几分钟
的零重力状态。“白色骑士二号”和“太空船二号”是将运载飞机和飞船按比例增大的
版本——“太空船一号”曾获于2004年获得为私人太空飞行设立的价值1000万美元的安
萨里X大奖。
自7月被揭开神秘面纱以来,“白色骑士二号”已进行了发动机和跑道测试并上演
短距离飞行。“维京银河”总裁威尔·怀特霍恩(Will Whitehorn)表示,这驾由位于加
利福尼亚州莫哈韦的公司Scaled Composites研制的飞机正准备上演
avatar
r*l
3
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 的大作中提到】
: 比如说我想要让张三给我写一个类
: 我去调用张三写好的类里面的方法
: 但是有个问题,就是我怎么调用张三写的类的方法呢?
: 张三的类还没写呢,我跟张三只有一个约定
: 我只能知道张三将来要写好的类的方法
: 但是我现在要用,如果我等张三写好了类我再开始写的话
: 效率就非常低了,那当我只有跟张三的约定的前提下
: 我该怎么做才能使得张三写出符合我标准的代码?
: 四种方法
: 第一种是我写好一个虚拟类,让张三去继承这个虚拟类

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。