买了本书,简单的翻了翻,发现里边的东西好像都接触过了,简单的记录一下。

静态工厂方法代替构造方法

优点:1有名称,2对象复用或者单例,3可以返回子类型,灵活性较高,4代码简洁,5在编写包含该方法的类时,返回对象的类不需要存在
缺点:1类如果不含公有的或者受保护的构造器,就不能被子类化(子类继承),2与普通静态方法没有区别,不好辨识

构建器(Builder)

多个构造函数参数时,推荐使用构建器。易于阅读和编写,线程安全(set方式并不是线程安全的)
写起来麻烦点,性能上稍微弱点

单例

私有构造器、懒汉、饿汉、双重校验锁、静态内部类、volatile

优先考虑依赖注入来引入资源

创建一个类的实例时,就将改资源传到构造器中。

避免创造多余的对象

及时消除过期的对象引用

避免使用终结方法和清除方法

使用try-with-resources

同时覆盖equals和hashcode

始终覆盖toString

clone要谨慎,注意深度和浅度

comparable接口,对象的大小比较,注意数据溢出

使类和成员的可访问性最小化

使用getter和setter

可变性最小化

访问控制符、final类

多用组合、少用继承

考虑禁止继承

优先考虑泛型类 泛型方法

使用枚举代替int常量

Android中不推荐枚举,可以使用@IntDef

使用@override

返回零长度的数组或集合,而不是null

编写文档、注释

将局部变量作用域最小化

了解已有的类

精确的计算请不要使用Float和Double

使用BigDecimal

优先使用基本类型,而不是对象

字符串的拼接要使用stringBuilder

stringBuffer是线程安全的

不要忽略异常

注意并发

同步锁,单线程线程池、

尽量不要使用wait、notify,推荐使用工具

序列化

Android中推荐 Parcelable,写起来麻烦,但是效率是Serializable的十倍以上。
当然我自己也会用json实现类似的序列化功能


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

WDYDT-13-Java中自带的排序 上一篇
WDYDT-11-Android Signature Version V1 V2 下一篇