仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1699|回复: 20
打印 上一主题 下一主题

[学习教程] 发布一篇为何Java中承继多半是无害的

[复制链接]
因胸联盟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:33:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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这些最基本的,嘿嘿,就算你是高手的话,在大行的企业级应用的话还是需要框架的,一个好的框架确实能构解决许多问题。
小魔女 该用户已被删除
沙发
发表于 2015-1-21 10:03:15 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
不帅 该用户已被删除
板凳
发表于 2015-1-22 11:04:21 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
变相怪杰 该用户已被删除
地板
发表于 2015-1-30 16:38:01 来自手机 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
若相依 该用户已被删除
5#
发表于 2015-2-1 12:12:11 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
愤怒的大鸟 该用户已被删除
6#
发表于 2015-2-3 11:19:29 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
灵魂腐蚀 该用户已被删除
7#
发表于 2015-2-6 07:40:26 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
飘飘悠悠 该用户已被删除
8#
发表于 2015-2-6 19:43:35 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
海妖 该用户已被删除
9#
发表于 2015-2-12 03:21:40 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
透明 该用户已被删除
10#
发表于 2015-3-2 21:38:08 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
因胸联盟 该用户已被删除
11#
 楼主| 发表于 2015-3-11 06:33:39 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
兰色精灵 该用户已被删除
12#
发表于 2015-3-11 07:08:28 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
冷月葬花魂 该用户已被删除
13#
发表于 2015-3-12 14:35:01 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
admin 该用户已被删除
14#
发表于 2015-3-17 01:07:50 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
若天明 该用户已被删除
15#
发表于 2015-3-18 19:07:06 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
只想知道 该用户已被删除
16#
发表于 2015-3-26 11:09:38 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
飘灵儿 该用户已被删除
17#
发表于 2015-4-4 13:23:55 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
活着的死人 该用户已被删除
18#
发表于 2015-4-10 01:32:29 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
老尸 该用户已被删除
19#
发表于 2015-4-14 14:27:03 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
小妖女 该用户已被删除
20#
发表于 2015-4-20 03:11:59 | 只看该作者
是一种为 Internet发展的计算机语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-28 14:15

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表