学解《Effective java》
来源:互联网 发布:林弯弯淘宝 编辑:程序博客网 时间:2024/04/27 21:19
自己理解不深不全,多多见谅
法则一:考虑用静态工厂方法代替构造器
类事前创建好一个静态对象,并通过静态方法(即静态工厂方法)返回该静态对象,避免用构造器多次创建。而且类可以仅提供该静态工厂方法,来替代构造器。
优势有三个:第一,现对于构造器使用函数参数列表,来指明返回实际被创建的对象,静态工厂方法更易描述。或者说静态创建对象用途更加专一,可以直接在名称上进行体现。【相对有构造器,静态工厂方法 hava a name】
第二,由于实例是静态的,可以事先创建好并缓存起来,避免每次调用时候不必要的重复创建。类似享元模式(flyweight模式,又称轻量级模式),享元模式,重复使用内存中已存在对象,降低资源的消耗。也由于实例是可控的,如果仅有一个实例,则可关联到singleton模式(单例模式),则符号==与.equals()函数使用上无区别,使用==替代.equals()对性能会有随提升。
第三,返回对象的灵活性更大,可返回其任意子类型。(应用方面偏向于接口,参见Collection),我理解的如下图所示,其中static实现类可nonpublic constructor class,甚至可以暂时不写
refers: Interfaces cannot hava static methods, so by convention, staitc factory methods for an interface named Type are put in a noninstantiable class name Types.
第四,创建参数化实例更加简便。例,Map<String, List<String>> map = new Map<String, List<String>>()可替代为Map<String, List<String>> map = Map.newInstance();
- 学解《Effective java》
- 学解《Effective java》之 构造器到构建器的跨越
- Effective Java
- Effective Java
- Effective Java
- Effective Java
- effective java
- effective java
- Effective Java
- Effective Java
- effective java
- Effective Java
- Effective Java
- 《Effective Java》
- effective java
- effective java
- Effective Java
- Effective Java
- JSP 30:<c:forEach/>的简单实例
- MySQL里的ERROR 1366 (HY000): Incorrect string value问题
- angular下载二进制Excel文件
- Python获取时间范围内日期列表和周列表的函数
- Linux下安装搭建Memcached集群环境
- 学解《Effective java》
- 如何在ASP.NET MVC 中获取当前URL、controller、action
- 关于Memcached一致性hash算法
- 吐槽memcached proxy 之memagent
- Windos下PHP安装redis扩展
- Linux下安装搭建Hadoop集群
- XStream使用详解
- 单例模式
- Unity着色器教程 | 积雪效果(改进版 原版本有问题)