买了本书,简单的翻了翻,发现里边的东西好像都接触过了,简单的记录一下。
静态工厂方法代替构造方法
优点: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 协议 ,转载请注明出处!