只公开你要公开的内容

只公开你要公开的内容

ID:41870601

大小:565.51 KB

页数:33页

时间:2019-09-04

只公开你要公开的内容_第1页
只公开你要公开的内容_第2页
只公开你要公开的内容_第3页
只公开你要公开的内容_第4页
只公开你要公开的内容_第5页
资源描述:

《只公开你要公开的内容》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、只公开你要公开的内容5第五章作为API,如何公开内部的相关数据和结构,是涉及经验问题,怎样既要保证需要用的公开出去,同时把要隐含的信息隐含起来。API公开的内容越少越好。一般设计者认为:终究会有些人用得上这些功能,只要功夫深有人用,当然就要公开,这这是错的。应该是有必要才公开方法添加容易与移去难设计者带来的问题往往远远多于其解决的问题。向API中添加一个新方法是很容易的一件事,但与此相反,想从API中移徐一个方法却非常困难。一个API对外提供的功能越多,那么为保持向后兼容性所做的工作也就越多。提供的功

2、能越多留给具体实现的空间也就越少。如果API公开的不必要的内容越多,可改进的空间也就越少。方法的添加与移去1用例不具有说服力2内部特性存在对于API设计来说,其水平越差,所编写的API越会公开大量不必要的内容。这种设计方式没有任何规划,最终把相关的API给捣成一堆浆糊。他们所写的API可能会被动他人误用。一个人设计的API长,他设计的API公开的内容就会越少。不应该公开的在发布API的第一个版本之前,将不必要时的内容从API中移走。每公开的一个API,意味着你对该API的用户做出了一个未来的兼容性承诺

3、。最简单、有效的解决方法就是,一切都以用户为中心,但要逐步来满足他们的需求。5.1方法优于字段1.类中的字段不公开2.利用SET/GET获得函数3.虚拟机效果:速度1.类中的字段不公开设计技巧就是:不要把类中的字段直接对外公布,而应该放置在内部。只能通过相应的getter/setter方法来访问字段2.虚拟机解释执行可以比编译执行还要快。Java虚拟机的性能已经大幅提高。虚拟机首先解释执行类文件中的内容,然后监控程序的执行情况。与静态编译不同的是,它不进行预连接,也不根据通用的环境进行编译,而是由Ho

4、tSpot编译器根据本地操作系统、硬件等环境在程序执行的时候进行优化处理。3.动态编译代码要比静态编译代码执行快一个好处就是HotSpot编译器可以将虚方法进行内联。很清楚这样做是需要去访问内存和进行跳转才能实现。传统编译生成代码相比,就少了定位、跳转等指令环节,执行速度自然就更快了。执行到一定的次数后,就把对虚方法的调用转成实际方法的入口。而无须先定位再跳转。由于参考了具体的运行环境,其运行性能要比静态编码高出很多5.2工厂方法优于构造函数使用工厂方法而不是直接使用构造函数来创建一个对象,那么对AP

5、I的改进可谓好处多。工厂方法则为开发人员带来了很高的灵活性,它通常是一个静态的方法,工厂方法的第一个优点就在于工厂方法返回值不不一定是声明类型的实例,使用工厂方法可以更好地体现面向对象语言中多态优势,代码也会显得更加简洁。工厂方法支持参数化的返回类型(1)PublicfinalclassTemplateextendsobject{PrivatefinalClasstype;PublicTemplate(Classtype){this.type=type;}PublicClassgetType(){re

6、turntype;}Template(){this(object.class);}}工厂方法支持参数化的返回类型(2)PublicfinalclassTemplateextendsobject{PrivatefinalClasstype;PublicTemplate(Classtype{this.type=type;}PublicClassgetType(){returntype;}//nowwhat!?PublicTemplate(){this(object.class);}

7、}工厂方法支持参数化的返回类型(3)PublicfinalclassTemplateextendsobject{PrivatefinalClasstype;PublicTemplate(Classtype{this.type=type;}PublicClassgetType(){returntype;}@Deprecated@SuppressWarnings(“unchecked”)PublicTemplate(){this((Class)object.class);}P

8、ublicstaticTemplatecreate(){ReturnnewTemplate(object.class)}}5.3让所有的内容都不可更改不考虑让其拥有子类,这个类不能被继承。否则API一旦发布以后,会有各种使用方式,大量无法预计的事情。PublicclassHello{Publicvoidhello(){System.out.println(“Hello”);}}直接公开这个可被继承的Hello类,会有很多代

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。