博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
effective JAVA 阅读笔记。
阅读量:6283 次
发布时间:2019-06-22

本文共 1434 字,大约阅读时间需要 4 分钟。

第一条:考虑用静态工厂方法来代替构造器。

优势:

1,他们有重命名,这回让我们的行为更加清晰,增加可读性。

2,不必每次都创建一个对象,减少对象的创建与销毁,提高性能。

3,可返回类型的各种子类型,多态优势。

4,对于复杂对象的创建更加简洁。

缺陷:

1,他们容易与其他静态方法混淆。建议常规命名,或者创建工厂类进行专门管理。

 

 

第二条遇到多个构造器参数时使用构建器

通过构建器管理参数,这样就无需多个不同参数类型的构造器了。

优势:

1,对于大型类不用创建多个奇怪参数有序的构造器.

2、易于配置参数无需多条javabean的Set方法导致对象在不同时间段不一致.

3、易于对参数管理阅读。

缺陷:

多创建了一个构造器,导致性能损失。

示例:

package com.dhh.all;public class Nf {    private final int a;    private final int b;    private final int c;    private final int d;    private final int e;    public static class Buileer{        private int a=0;        private int b=0;        private int c=0;        private int d=0;        private int e=0;                        public Buileer(int a, int b) {            super();            this.a = a;            this.b = b;        }        public Buileer setC(int c) {            this.c = c;            return this;        }        public Buileer setD(int d) {            this.d = d;            return this;        }            public Buileer setE(int e) {            this.e = e;            return this;        }                public Nf builder(){            return new Nf(this);        }            }            private Nf(Buileer b){        this.a=b.a;        this.b=b.b;        this.c=b.c;        this.d=b.d;        this.e=b.e;    }    public static void main(String[] args) {        Nf n=new Nf.Buileer(1,2).setC(1).setD(2).setE(3).builder();    }}

 

转载于:https://www.cnblogs.com/blackdeng/p/8799709.html

你可能感兴趣的文章
(转)从给定的文本中,查找其中最长的重复子字符串的问题
查看>>
HDU 2159
查看>>
spring batch中用到的表
查看>>
资源文件夹res/raw和assets的使用
查看>>
UINode扩展
查看>>
LINUX常用命令
查看>>
百度云盘demo
查看>>
概率论与数理统计习题
查看>>
初学structs2,简单配置
查看>>
Laravel5.0学习--01 入门
查看>>
时间戳解读
查看>>
sbin/hadoop-daemon.sh: line 165: /tmp/hadoop-hxsyl-journalnode.pid: Permission denied
查看>>
@RequestMapping 用法详解之地址映射
查看>>
254页PPT!这是一份写给NLP研究者的编程指南
查看>>
《Data Warehouse in Action》
查看>>
String 源码浅析(一)
查看>>
Spring Boot 最佳实践(三)模板引擎FreeMarker集成
查看>>
Fescar 发布 0.2.3 版本,支持 Redis 和 Apollo
查看>>
Google MapReduce到底解决什么问题?
查看>>
CCNP-6 OSPF试验2(BSCI)
查看>>