最小化可访问性
1:包括方法,属性,内部类,提供最少方法的接口供外部使用。
2:一个类如果只被另一个类使用,应该作为类的内部类
3:可以default 方便测试类访问,不能超过default了。
不要有public属性
提供private 和一个public方法
最小化可变性
不可变类好处,随便被各个类引用,随便被多线程并发,随便被使用
对象提供的时候就设置好了属性,不提供set方法
final class防止子类提供set方法,构造器私有,提供静态方法(valueOf()等)
final修饰属性,仅在构造函数提供设置机会,完全完成初始化
private修饰属性,防止被访问
可变属性中,不要引用不可变属性
复合优于继承
为了复用代码,最好是互相引用,而不是继承,父类稍微改一下就爆炸
慎用继承
继承破坏了封装性,能不用就不用。
1:一般final class
2:非要继承,请提示好哪些方法可以覆盖,哪些方法是不能动的。
3:abstract class 和interface ,除外。他们可以很好的使用继承
接口优于抽象类
类只能单继承,可以多实现接口,所以接口更灵活,更加随意。
抽象类的单继承,觉得了多个抽象类必须是互相有上下游,才能公用多个。实现符合功能。而接口随意。
模版类,优先选择抽象类型。
接口仅包含方法
不要把常量放接口里,常量一般是实现细节,和接口无关
同类继承
同类实现继承分开,不要写个大类,type ==xxx之类的模式
匿名函数使用对象
callback function 等回调函数最好不要有属性,提供单例供其他需要者使用。
静态内部类
非静态,匿名类,局部类 三种内部类,缺点比静态内部类多
类结构
自上而下
1:类注释
2:静态常量
3:静态类
4:属性
5:构造函数
6:方法