创建对象类型的
1,静态工厂方法代替构造器
- 静态工厂方法有名称,不容易混乱他的作用
- 不必再每次调用他的时候创建实例,创建实例的代价是高的,可以重复利用缓存的对象
- 静态工厂甚至能返回子类对象,例如在接口上(Java8 )的静态方法上,返回一个直接可以用的类
- 根据参数值,决定不同的返回类型(貌似和上面有点像
- 返回的类型,可以在写静态工厂时候不存在(貌似用在rpc方面)
- 缺点
- 如果不包含公有或包含的构造器,就不能让子类实例化
- javadoc不能很好解释
- ps
- vauleOf,转换方法
- instance或者getInstance,通过方法参数获得实例,但不能说每次实例都是一样的,A a = A.getInstance(option)
- create或者createInstance,通过静态方法获得实例,每次都说新的实例
- getType,在不同类中返回不同的对象,type可以是其他意思,比如getA,getB
- newType,和上面一样,返回新的实例
2,遇到多个构造器参数的时候,使用构建器
- 构建器有同样的参数列表
- 构建器构造函数写必须的参数,后面再添加可选的参数
- build方法返回实例的引用
‘
3,用枚举强化单例模式
4,在一些静态工具类中,将构造方法私有化,不能abstract抽象化,别人还以为你是专门用来继承的
5,不要用单例和静态工具类来实现一个或多个资源的类(他们都只能假设有一种资源)(静态工具类不能用状态),因为资源的行为会影响类的行为,应该将资源交给工厂(spring),通过他们进行依赖注入来创建类
6,避免创建不必要的对象
- string
- 像解析token,正则表达式,这些,缓存创建好的对象
- 自动装箱问题,尽量使用基本类型
7,消除过期的对象引用
- 像栈这种需要自己维护一些数组的需要引用指空来防止内存泄漏
- 缓存也会内存泄漏,当缓存的生命周期由该键的外部引用决定时,可以用weakhashmap
8,-
9,使用try-with-resource 代替try- catch