助力软件开发企业降本增效 PHP / java源码系统,只需一次付费,代码终身使用! 广告
**1、使用静态方法代替构造器** ```java public static Boolean valueOf(boolean b) { return (b ? TRUE : FALSE); } ``` 优势: * 静态工厂方法的名称可以明确描述正在返回的对象 * 静态工厂方法可以返回已经缓存的对象,而不是像构造器一样每次返回新的对象 * 静态工厂方法可以返回原返回类型的任何子类型的对象 **2、存在多个构造器参数时推荐使用Builder模式** ```java // Phone.java public class Phone { private final String mBrand; private final int mColor; private final String mMemory; private final String mCPU; private Phone(Builder builder) { mBrand = builder.mBrand; mColor = builder.mColor; mMemory = builder.mMemory; mCPU = builder.mCPU; } public static class Builder { /** * 必需参数 */ private final String mBrand; private final int mColor; /** * 可选参数 */ private String mMemory = "6g"; private String mCPU = "835"; public Builder(String brand, int color) { mBrand = brand; mColor = color; } public Builder memory(String memory) { mMemory = memory; return this; } public Builder cpu(String cpu) { mCPU = cpu; return this; } public Phone build() { return new Phone(this); } } } ``` 使用Builder模式创建对象: ```java // MakePhone.java Phone mate20 = new Phone.Builder("Huawei", Color.BLACK) .cpu("980") .memory("6g") .build(); ``` Builder类最终的build方法中,会从Builder对象中获取相应信息生成目标类的对象。 > 对于有多个参数的构造器来说 > * 重叠构造器模式线程安全,但不易编写以及阅读; > * JavaBean模式易编写及阅读,但是非线程安全; > * Builder模式综合以上两种模式的优点,既易编写及阅读,也是线程安全。 **3、使类和成员的可访问性最小化** 设计良好的模块会隐藏所有的实现细节,把它的API与实现清晰隔离开来,模块之间只通过API进行通信,一个模块不需要知道其他模块内部的工作情况,这称为信息隐藏或封装。 * 公有类的实例域决不能是公有的