需要多个参数输入时-----------------考虑使用变种的Builder模式
2024-09-01 18:07:31
业务需求:
创建一个不可变的Person对象,这个Person可以拥有以下几个属性:名字、性别、年龄、职业、车、鞋子、衣服、钱、房子。
要求:
其中名字和性别是必填项,而其他选填项可以根据情况自由输入。
具体实现:
1.为了保证对象的不可变,我们要将Person类中的每一个属性都声明为private final的。
2.在Person类中定义一个内部类Builder。
(1)这个Builder内部类中的属性要和Person中的相同,并且必须有的属性(名字和性别)要用final修饰,防止这些属性没有被赋值。
(2)其中必填项使用Builder的构造方法接收值,选填项使用返回值为Builder的方法接收值。
(3)最后定义了一个build方法,将Builder对象传入Person的私有构造方法,最终返回一个Person对象。
3.Person的私有构造方法的写法:不直接传入属性,而是传入一个Builder对象。
方法调用:
必填项使用Builder构造方法传入,非必须的属性可以根据需要任意设置。
转载于 Java 大白话讲解设计模式之 -- 建造者(Builder)模式。
最新文章
- NO.3 CAS配置问题汇总
- 。。。珍惜生命,远离Eclipse。。。
- python windows终端窗口下输出编码错误
- delphi 调用c#dll
- mybatis insert 如何返回主键
- C# 中的枚举类型 enum (属于值类型)
- (简单) POJ 3468 A Simple Problem with Integers , 线段树+区间更新。
- web服务的三大主流架构
- Python生成器主要用法
- AVStream ddk 翻译
- Asp.net MVC 权限过滤器实现方法的最佳实践
- topcoder srm 615 div1
- MVC Action 返回类型
- Linux日志痕迹清除
- Go语言从入门到放弃(一) 变量/常量/函数
- Lucas卢卡斯定理
- 洛谷P3193 [HNOI2008]GT考试 kmp+dp
- tkinter简单打开网址 + 执行系统命令
- 20170831工作日记--自定义View学习
- spring 默认情况下事务是惟一的 同一个方法里面第一个sql开启后 在执行完 将事务传递给下一个sql
热门文章
- Omnisharp VsCode Attaching to remote processes
- PTA的Python练习题(三)
- GO 回调实现
- EOS主网搭建教程--&;&;--搭建节点--&;&;--搭建mongodb数据库
- centos7一步一步搭建docker nginx 及重点讲解
- SRS源码—— Thread笔记
- 问题解决 : org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
- Django学习 之 HTTP与WEB为Django做准备
- 【JAVA蓝桥杯】基础练习2 十六进制转十进制
- 利用Python进行数据分析笔记-时间序列(时区、周期、频率)