创建和销毁对象

2016-10-10  本文已影响17人  求闲居士
1,考虑用静态工厂方法代替构造器

切忌第一反应就是提供共有构造器,而不先考虑静态工厂。

类可以通过静态工厂方法返回客户端而不是构造器。

静态方法获取创建对象。

注意静态工厂方法与设计模式中的工厂方法不同,并不直接对应。

优势:

可以通过方法名称描述返回的对象,使代码更易于阅读。对于通过参数创建不同对象时,静态工厂方法可以根据名称突出它们的区别。

单例模式。

隐式地实现对象的创建。例如Collections,通过接口指定返回对象,用户不需知道怎么创建对象,通过静态工厂方法在Collections中导出。

还可以每次调用时改变返回对象,这取决于静态工厂方法的参数值。例如EnumSet,它返回的实现类。

静态工厂方法返回的对象所属的类,在编写包含该静态工厂方法的类时可以不存在。这种灵活的静态工厂方法构成了服务提供者框架的基础。服务提供者框架有三个重要的组件:服务接口,提供者注册API,服务房屋API。感觉和android的WMS服务一样。

想map创建时,Map<String, String> s = new HashMap<String, String>(),这样需要2次参数泛型。可以用于静态工厂方法将后面的创建简化。

缺点
2,遇到多个构造器参数时要考虑用构造器builder

如果具有多个参数时,Builder就是种不错的选择,特别当大多数参数都是可选的时候。它更易于编写和阅读。

缺点
3,用私有构造器或者枚举类型强化Singlton属性

使用私有构造器和枚举实现单例模式

4,通过私有构造器强化不可实例化的能力

它保证类在任何情况下都不会被实例化,显示的构造器被私有化了。

场景:

有时候,你可能需要编写只包含静态方法和静态域的类。

5,避免创建不必要的对象
6,消除过期对象的使用
7,避免使用终结方法

提供一个显式的终止方法,要求改类的客户端在每个实例不再有用时调用这个方法。显式的终止一般与try-finally结构结合使用,以确保及时终止。

上一篇 下一篇

猜你喜欢

热点阅读