如何使用建造者模式(Builder Pattern)创建不可变类
2014-01-20 22:45
525 查看
本文由 ImportNew - 唐小娟 翻译自 Journaldev。如需转载本文,请先参见文章末尾处的转载要求。
ImportNew注:如果你也对Java技术翻译分享感兴趣,欢迎加入我们的 Java开发 小组。参与方式请查看小组简介。
我写过一篇《如何创建不可变类》。这篇文章中,我们将看到如何使用建造者模式创建不可变类。当构造器中的参数很多时,并且参数的顺序会给人造成困扰的时候,那么使用建造者模式来创建不可变类就是非常好的方法了。
下面是使用建造者模式来创建不可变类的例子:
ImmutableClass.java
下面的测试代码为我们测试到底创建的对象是不是不可变的。
ImmutableBuilderTest.java
不可变类只有getter方法
不可变类只有一个私有的构造器,以Builder对象作为参数来创建不可变对象
如果不可变类的成员变量是可变的(譬如HashMap),我们需要使用深拷贝(deep copy)或者克隆来防止成员变量被更改
当可选的成员变量很多的时候,使用建造者模式创建不可变类是不错的方法
原文链接: Journaldev 翻译: ImportNew.com - 唐小娟
译文链接: http://www.importnew.com/7860.html
ImportNew注:如果你也对Java技术翻译分享感兴趣,欢迎加入我们的 Java开发 小组。参与方式请查看小组简介。
我写过一篇《如何创建不可变类》。这篇文章中,我们将看到如何使用建造者模式创建不可变类。当构造器中的参数很多时,并且参数的顺序会给人造成困扰的时候,那么使用建造者模式来创建不可变类就是非常好的方法了。
使用建造者模式来创建不可变类
下面是使用建造者模式来创建不可变类的例子:ImmutableClass.java
ImmutableBuilderTest.java
重要的知识点
不可变类只有getter方法不可变类只有一个私有的构造器,以Builder对象作为参数来创建不可变对象
如果不可变类的成员变量是可变的(譬如HashMap),我们需要使用深拷贝(deep copy)或者克隆来防止成员变量被更改
当可选的成员变量很多的时候,使用建造者模式创建不可变类是不错的方法
原文链接: Journaldev 翻译: ImportNew.com - 唐小娟
译文链接: http://www.importnew.com/7860.html
相关文章推荐
- build WebRTC for android .
- CodeUI Test:UIMap录制文件分析一
- 关于数据库中的主键和外键以及unique
- Glue4Net简单部署基于win服务的Socket程序
- easyUI 行显示嵌套对象的方法
- Combobox控件出现SelectedValue的值为“System.Data.DataRowView”
- easyUI datagrid 单元格数据的修改,保存,json 数据的转化
- Zabbix&Fluentd笔记
- ORA-01002: fetch out of sequence
- [转载]A cycle was detected in the build path of project
- 使用SwingWorker之三
- create_workqueue 和create_singlethread_workqueue的区别
- 使用SwingWorker之一
- N-Queens II 八皇后问题的解的个数
- View Programming Guide for iOS_读书笔记
- N-Queens 八皇后问题I
- Unique Paths II 包含障碍物,求所有的路径
- Unique Paths 所有可能的路径
- poj 1947 Rebuilding Roads(树形DP)
- perf_events Frequently Asked Questions