文章列表
偶尔情况下,你会编写只包含静态方法和静态域的类。这种类的名声不太好,因为有些人滥用他们来避免面向对象编程,不过这种类确实有他们的用处。
我们可以照java.lang.Math或java.util.Arrays的样子,用这种类将基本类型或数组 ...
- 2013-01-21 15:32
- 浏览 602
- 评论(0)
所谓Singleton,是指仅能被实例化一次的类。Singleton通常代表本质上唯一的系统组件,例如窗口管理器或文件系统。让一个类成为Singleton就无法为Singleton替换模拟实现,除非它实现一个作为其类型的接口,所以会让其客户端难于测试。
JDK1.5之前,有两种方法可以实现Singleton,二者均基于让构造函数私有化,并导出一个公共静态成员来提供对唯一实例的访问。在方法一中,该公共静态成员是一个final域:
//Singleton with public final field
public class Elvis{
public static final ...
- 2013-01-15 15:53
- 浏览 529
- 评论(0)
静态工厂和构造函数都有一个限制:可选参数数量很大时,他们都不能很好地扩展。考虑一下这个例子:用一个类来表示袋装食品上的营养成分标签,这些标签有几个必选字段:每份的含量、每罐的份数、每份的卡路里;还有超过20个可选字段:总脂肪含量、饱和脂肪含量、转化脂肪含量、胆固醇含量、钠含量等等。大多数产品只有少数几个可选字段是非零值。
你将为这种类编写怎样的构造函数或者静态工厂呢?程序员习惯上会使用telescoping constructor模式,提供一个值包含必选参数的构造函数,以及一个包含一个可选参数的构造函数、一个包含二个可选参数的构造函数、等等,最后一个构造函数包含所有可选参数。【例】就像 ...
- 2013-01-11 14:59
- 浏览 447
- 评论(0)
一、JNLP介绍:
在java开发的早期,重点被放在了客户端开发。语言中对于applet和安全下载的支持对于万维网(WWW)的发布看上去是个不错的主意。但是现实是java最大的成功在于服务器端,java的强大功能和适应性赢得了服 ...
- 2013-01-09 11:40
- 浏览 715
- 评论(0)
本章的主题是创建和销毁对象:何时创建、怎样创建;何时应该避免创建、如何避免创建;如何确保对象适时被销毁;如何管理对象销毁前的清理动作。
一个类如果要允许客户获得其实例,常用方法是提供一个public的构造函数。还有另外一个方法,也应该在每个程序员的工具集中占有一席之地:类可以提供一个public的静态工厂方法,这个方法返回类的实例。【例】下面是Boolean类(基本类型boolean对应的包装类)代码里的一个简单示例,该方法将一个boolean简单类型转换为一个Boolean对象引用。
public static Boolean valueOf(boolean b){
ret ...
- 2013-01-08 15:04
- 浏览 540
- 评论(0)
本书旨在帮助你最高效地使用Java语言及其基础类库,包括java.lang、java.util,以及小部分的java.util.concurrent、java.io。本书也会不时地讨论其他类库,不过不会涵盖图形用户界面、企业级API以及移动设备相关类库。
本书包含78个条 ...
- 2013-01-05 17:21
- 浏览 514
- 评论(0)
如果一个同事跟你说:“我的配偶今天晚上在家制造了特别的晚餐,你愿意参加吗?”你的脑子应该会闪过三个念头:首先,你被邀请去参加晚餐;第二,英语不是你同事的母语;最后,一堆费解。
如果你学过外语并试图在课 ...
- 2013-01-05 15:40
- 浏览 334
- 评论(0)
Open Closed Principle:
Software entities like classes, modules and functions should be open for extension but closed for modifications.
对扩展开放,对修改关闭。一个软件实体应该通过扩展来实现变化,而不是通过修改已有代码来实现变化。
一个软件实体 ...
- 2012-12-31 16:14
- 浏览 688
- 评论(0)
LoD,Law of Demeter:
又称最少知识原则(Least Knowledge Principle),一个对象应该对其他对象有最少的了解
一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的 ...
- 2012-12-31 16:13
- 浏览 608
- 评论(0)
Interface Segregation Principle:
Clients should not be forced to depend upon interfaces that they don't use.——客户端只依赖于它所需要的接口;它需要什么接口就提供什么接口,把不需要的接口剔除掉。
The dependency of one class to another one should depend on the smallest possible interface.——类间的依赖关系应建立在最小的接口上。
即,接口尽量细化,接口中的方法尽量少
问题由来:
类 ...
- 2012-12-31 16:12
- 浏览 813
- 评论(0)
DIP,Dependence Inversion Principle:
High level modules should not depend upon low level modules. Both should depend upon abstractions.
Abstractions should not depend upon details. Details should depend upon abstractions.
即“面向接口编程”:
高层模块不应该依赖低层模块,两者都应该依赖其抽象;——模块间的依赖通过抽象发生。实现类之间不发生直接的依赖关系(eg. 类B ...
- 2012-12-31 16:10
- 浏览 684
- 评论(0)
LSP,Liskov Substitution Principle:
1) If for each object s of type S, there is an objectt of type T such that for all programs P defined in terms of T, the behavior of P is unchanged when s is substituted
fort when S is a subtype of T.
2) Functions that use pointers or references to base classes ...
- 2012-12-31 16:08
- 浏览 564
- 评论(0)
SRP,Single Responsibility Principle:
There should never be more than one reason for a class to change.
应该有且仅有一个原因引起类的变更。(如果类需要变更,那么只可能仅由某一个原因引起)
问题由来:
类T负责两个不同的职责:职责P1, ...
- 2012-12-29 16:31
- 浏览 629
- 评论(0)
SDO是为了屏蔽数据格式、数据源的差异性而出现的。新公司用到了SDO并自己做了SDO的实现,作为学习,试着翻译这篇篇IBM 2004年的文章
原文:http://www.ibm.com/developerworks/java/library/j-sdo
摘要:
如果你觉得J2EE编程模型及其API总是让你在特定技术配置(technology-specific configuration)、编码、调试上花费太多时间,那么这篇文章就对你有用!许多Java程序员疑惑怎样用统一的方式访问异构数据,并对许多打算解决这个问题的编程框架很失望。Bertrand Portier 和Frank Budins ...
- 2012-12-28 17:44
- 浏览 940
- 评论(0)
方法一:
1)先下载一个Excel文件:http://vdisk.weibo.com/s/lKO2s
2)把Catalog页移动到需要建立索引的Excel文件中
3)右键Create按钮 - Assign Macro... - 选择:Catalog.Create_DropDown_MainMenu
右键Clear按钮 - Assign Macro... - 选择:Catalog.DeleteSpecifyShapes
4)点击Create即可生成目录:
方法二:
首先打开要创建目录的EXCEL文件 —— Alt+F11——插入——模块——把下面的代码拷贝到模块中:然 ...
- 2012-12-27 17:40
- 浏览 1281
- 评论(0)