来看面向Java开辟职员的Scala指南 - 关于特性和举动
唉!都是钱闹的1.Swing和.net网页编程开发比较------从市场份额看.net网页编程开发主要占据大部分的中小型和中型的的桌面开发,原因是它封装了很多工具Scala其实不仅仅只给JVM引进了函数观点,它还为我们供应了一种关于面向对象言语计划的古代视角。在这一期的面向Java开辟职员的Scala指南中,TedNeward先容了Scala怎样使用特性(trait)使对象加倍复杂、更容易于构建。您将懂得到,特性与Java™接口和C++多重承继供应的传统极性既有类似的地方,也有分歧的地方。
出名迷信家、研讨学者艾萨克.牛顿爵士有如许一句名言:“假如说我看得比他人远一些,那是由于我站在伟人的肩膀上”。作为一位热情的汗青和政治学家,我想对这位巨人的名言略加修正:“假如说我看得比他人远一些,那是由于我站在汗青的肩膀上”。而这句话又表现出另外一位汗青学家GeorgeSantayana的名言:“健忘汗青势必重蹈复辙”。换句话说,假如我们不克不及回忆汗青,从已往的毛病(包含我们本人已往的履历)中吸收教导,就没无机会做出改善。
您大概会困惑,如许的哲学与Scala有甚么干系?承继就是我们要会商的内容之一。思索如许一个现实,Java言语的创立已是近20年前的事变,事先是“面向对象”的全盛时代。它计划用于仿照事先的支流言语C++,实验将利用这类言语的开辟职员吸引到Java平台下去。毫无疑问,在事先看来,如许的决议是明智并且需要的,但回忆一下,就会发明个中有些中央其实不像创立者假想的那样无益。
比方,在二十年前,关于Java言语的创立者来讲,反应C++作风的公有承继和多重承继是需要的。自那以后,很多Java开辟人入手下手为这些决议尔后悔。在这一期的Scala指南中,我回忆了Java言语中多重承继和公有承继的汗青。随后,您将看到Scala是如何改写了汗青,为一切人带来更年夜收益。
C++和Java言语中的承继
汗青是人们乐意纪录上去的现实。
—拿破仑.波拿巴
处置C++事情的人们可以回想起,公有承继是从基类中猎取举动的一种办法,不用显式地承受IS-A干系。将基类标志为“公有”同意派生类从该基类承继而来,而无需实践成为一个基类。但对本身的公有承继是未失掉普遍使用的特征之一。承继一个基类而没法将它向下或向上转换到基类的理念是不明智的。
另外一方面,多重承继常常被视为面向对象编程的必备要素。在建模交通工具的条理布局时,SeaPlane无疑必要承继Boat(利用其startEngine()和sail()办法)和Plane(利用其startEngine()和fly()办法)。SeaPlane既是Boat,也是Plane,岂非不是吗?
不管怎样,这是在C++壮盛时代的设法。在疾速转向Java言语时,我们以为多重承继与公有承继一样存在缺点。一切Java开辟职员城市告知您,SeaPlane应当承继Floatable和Flyable接口(也许还包含EnginePowered接口或基类)。承继接口意味着可以完成该类必要的一切办法,而不会碰到假造多重承继的困难(碰到这类困难时,要弄分明在挪用SeaPlane的startEngine()办法时应挪用哪一个基类的startEngine())。
遗憾的是,完全保持公有承继和多重承继会使我们在代码重用方面支付高贵的价值。Java开辟职员大概会因从假造多重承继中束缚出来而乐意,但价值是程序员常常要完成辛劳而易于堕落的事情。
回忆可重用举动
事变大抵能够分为大概永久不会产生的和不主要的。
—WilliamRalphInge
JavaBeans标准是Java平台的基本,它带来了浩瀚Java生态体系作为根据的POJO。我们都分明一点,Java代码中的属性由get()/set()对办理,如清单1所示:
清单1.PersonPOJO
//ThisisJava
publicclassPerson
{
privateStringlastName;
privateStringfirstName;
privateintage;
publicPerson(Stringfn,Stringln,inta)
{
lastName=ln;firstName=fn;age=a;
}
publicStringgetFirstName(){returnfirstName;}
publicvoidsetFirstName(Stringv){firstName=v;}
publicStringgetLastName(){returnlastName;}
publicvoidsetLastName(Stringv){lastName=v;}
publicintgetAge(){returnage;}
publicvoidsetAge(intv){age=v;}
}
<p>
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 是一种使用者不需花费很多时间学习的语言 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
页:
[1]