|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Oracle收购Sun后Java前途未卜。
年夜多半好的计划者象回避瘟疫一样来制止利用完成承继(extends干系)。实践上80%的代码应当完整用interfaces写,而不是经由过程extends。“Java计划形式”一书具体论述了如何用接口承继取代完成承继。这篇文章形貌计划者为何会这么作。
Extends是无害的;大概关于CharlesManson这个级其余不是,可是充足糟的它应当在任何大概的时分被避开。“JAVA计划形式”一书花了很年夜的部分会商用interface承继取代完成承继。
好的计划者在他的代码中,年夜部分用interface,而不是详细的基类。本文会商为何计划者会如许选择,而且也先容一些基于interface的编程基本。
接口(Interface)和类(Class)?
一次,我列入一个Java用户组的集会。在集会中,JamsGosling(Java之父)做倡议人发言。在那使人难忘的Q&A部分中,有人问他:“假如你从头机关Java,你想改动甚么?”。“我想丢弃classes”他回覆。在笑声停息后,它注释说,真实的成绩不是因为class自己,而是完成承继(extends)干系。接口承继(implements干系)是更好的。你应当尽量的制止完成承继。
得到了天真性
为何你应当制止完成承继呢?第一个成绩是明白的利用详细类名将你流动到特定的完成,给底层的改动增添了不用要的坚苦。
在以后的急迅编程办法中,中心是并行的计划和开辟的观点。在你具体计划程序前,你入手下手编程。这个手艺分歧于传统办法的情势----传统的体例是计划应当在编码入手下手前完成----可是很多乐成的项目已证实你可以更疾速的开辟高质量代码,相对传统的墨守成规的办法。可是在并行开辟的中心是主意天真性。你不能不以某一种体例写你的代码以致于最新发明的需求可以尽量没有疾苦的兼并到已有的代码中。
胜于完成你大概必要的特性,你只需完成你明白必要的特性,并且过度的对变更的包涵。假如你没有这类天真,并行的开辟,那几乎不成能。
关于Inteface的编程是天真布局的中心。为了申明为何,让我们看一下当利用它们的时分,会产生甚么。思索上面的代码:
f()
{
LinkedListlist=newLinkedList();
//...
g(list);
}
g(LinkedListlist)
{
list.add(...);
g2(list)
}
假定一个关于疾速查询的需求被提出,以致于这个LinkedList不克不及够办理。你必要用HashSet来取代它。在已有代码中,变更不克不及够部分化,由于你不单单必要修正f()也必要修正g()(它带有LinkedList参数),而且另有g()把列表传送给的任何代码。象上面如许重写代码:
f()
{
Collectionlist=newLinkedList();
//...
g(list);
}
g(Collectionlist)
{
list.add(...);
g2(list)
}
如许修正Linkedlist成hash,大概只是复杂的用newHashSet()取代newLinkedList()。就如许。没有其他的必要修正的中央。
作为另外一个例子,对照上面两段代码:
f()
{
Collectionc=newHashSet();
//...
g(c);
}
g(Collectionc)
{
for(Iteratori=c.iterator();i.hasNext())
do_something_with(i.next());
}
和
f2()
{
Collectionc=newHashSet();
//...
g2(c.iterator());
}
g2(Iteratori)
{
while(i.hasNext())
do_something_with(i.next());
}
g2()办法如今可以遍历Collection的派生,就像你可以从Map中失掉的键值对。现实上,你可以写iterator,它发生数据,取代遍历一个Collection。你可以写iterator,它从测试的框架大概文件中失掉信息。这会有伟大的天真性。
<p>
首先第一点:jsp,servlet,javabean这些最基本的,嘿嘿,就算你是高手的话,在大行的企业级应用的话还是需要框架的,一个好的框架确实能构解决许多问题。 |
|