设计模式
nciasd
perl,python,java,oracle,Linux,docker,AI,math
展开
-
Singleton in action with enum- the preferred approach
测试困难,因为无法给singleton替换模拟实现,除非它实现充当其类型的接口。 jdk5以前,都是把构造器声明为私有,导出公有静态成员; //Singleton with public final field public class Elvis{ public static final Elvis INSTANCE = new Elvis(); private Elvis(){.原创 2017-03-12 10:30:51 · 302 阅读 · 0 评论 -
通过私有构造器,使工具类不可实例化,也不可继承
//Noninstantiable utility class public class UtilityClass{ //Suppress default constructor for noninstantiability private UtilityClass(){ throw new AssertionError(); } //other me原创 2017-03-12 10:49:42 · 1531 阅读 · 1 评论 -
编写代码的原则,清析性和简洁性
模块的用户永远不应该被模块行为所迷惑; 模块要尽可能小,又不能太小; 代码应该被重用,而不是拷贝; 模块之间的依赖性尽可能的降低到最小; 错误应该尽早的被检测出来,最好是在编译时刻。java语言支持四种类型接口 类 数组 基本类型一个类实现了一个接口,或者extend另一个接口。 导出API或者API:是指类、接口、constructor、fields和序列化形式(serialized form)原创 2017-04-04 17:09:58 · 458 阅读 · 0 评论 -
考虑用静态工厂方法代替构造器
方法有名字,可以知道构建的是什么样的一个对象; 不必在每次调用的时候都创建一个新的对象,可以使用预先缓存好的对象,避免创建重复的对象–这样做的好处就是可以提升性能; 可以有选择的返回子类型的对象。 在静态工厂方法中使用范型可以使代码简洁,如下: public static <K,V> HashMap<K,V> newInstance(){ return new HashMap<K,V>();原创 2017-04-04 17:54:18 · 428 阅读 · 0 评论