【重构与模式】6.1用Creation Method替换构造函数
2019独角兽企业重金招聘Python工程师标准>>>
类中有多个构造函数,因此很难决定在开发期间调用哪一个。用能够说明意图的返回对象实例的Creation Method替换构造函数。
public class Person {private String name;private String phone;private String car;private String house;public Person(String name, String phone, String house, String car){this.name = name;this.phone = phone;this.house = house;this.car = car;}public Person(String name){this(name, null, null, null);}public Person(String name, String phone){this(name, phone, null, null);}public Person(String name, String phone, String car){this(name, phone, car, null);}
}
我们在使用Person类的时候,会创建这几类人:有房有车有电话、没房有车有电话、没房没车有电话,只有电话、什么都没有的人。单单的一个Person构造函数无法表达清楚我们的这些需求。
public class Person {private String name;private String phone;private String car;private String house;private Person(String name, String phone, String house, String car){this.name = name;this.phone = phone;this.house = house;this.car = car;}public static Person createPoorPerson(String name){return new Person(name, null, null, null);}public static Person createPersonWithPhone(String name, String phone){return new Person(name, phone, null, null);}public static Person createPersonWithPhoneCar(String name, String phone, String car){return new Person(name, phone, null, car);}public static Person createRichPerson(String name, String phone, String house, String car){return new Person(name, phone, house, car);}
}
Person poor = Person.createPoorPerson("aqia");Person rich = Person.createRichPerson("aqia", "1511510000", "house", "car");
转载于:https://my.oschina.net/u/1182234/blog/163729
【重构与模式】6.1用Creation Method替换构造函数相关推荐
- 重构与模式:改善代码三部曲中的第三部
一.改善代码的三部曲 <设计模式>-> <重构>-> <重构与模式>.也就是设计->重构->重构出新设计. <设计模式>主要详细 ...
- 《重构与模式(修订版)》目录—导读
版权声明 重构与模式(修订版) Authorized translation from the English language edition, entitled: Refactoring to P ...
- 重构是提高可测试性的主要手段 《设计模式》《代码重构》《从重构到模式》 《反模式》 重构时机 编写测试时候 修改BUG时候
l重构是提高可测试性的主要手段 <设计模式><代码重构><从重构到模式> <反模式> 重构时机 编写测试时候 修改BUG时候
- 设计模式学习(六):重构与模式,推荐书籍(完)
备注: 1. 模式常常组合使用,共同解决问题. 2. 模式是特定场景下优雅的解决方案,因此场景很关键.在软件设计中,特定的场景可能是显而易见的,可能是隐而不现的,有时甚至是 ...
- 用python重构策略模式
资料来源:<流畅的Python> 案例分析:重构"策略"模式 <设计模式:可复用面向对象软件的基础>一书是这样概述"策略"模式的: 定义 ...
- modern android5.1,Modern版IT之家v5.1.1更新:ARM版重构+横屏模式修复
Win7之家( www.win7china.com):Modern版IT之家v5.1.1更新:ARM版重构+横屏模式修复 2月27日,Win8.1/Win10版IT之家v5.1.1携多项重磅改进及新特 ...
- Factory Method模式的误区:Factory Method模式是简化版的Abstract Factory吗?
FactoryMethod是一个相对比较简单的创建型模式,但是能领悟或者用对的并不多见:很多示例都没有反应出Factory Method的核心思想,只是实现了一个简化版的Abstract Factor ...
- 步步为营,重构出模式(2)
上回说到Command的雏形被高手改过之后,高手让我再对代码进行一下重构和完善,并且还特意嘱咐不要出现那么多的字符串.饿滴神啊,该怎么办呢? 外事不决问Google,果然,有办法了: 我用一个配置文件 ...
- 西行漫记(15):重构到模式
今天的问题有点意思:我们有停车场(ParkingLot),还有停车小弟(Attendant).一个停车小弟要管理多个停车场,然后帮客人把车子泊到有空位的停车场去.然后老板说了,要有不同的策略来选择停车 ...
- 优秀代码---改善代码三部曲:重构、设计模式、重构与模式
重构是术,设计是道: 前言 1.好代码的特点 好代码就像 玩笑无需解释. •内聚Cohesive: 内聚的代码更容易理解和查找 bug • 松耦合Loosely Coupled: 松耦合的 ...
最新文章
- Java并发编程 Synchronized及其实现原理
- OpenCV相机校准camera calibration的实例(附完整代码)
- shell 删除奇数偶数行
- php 正则获取html标签,php正则取嵌套html标签
- mysql 查询某个字段SQL语句【mysql语句】
- 自动化代码部署、代码回滚、命令执行软件之capistrano
- php 抽象类,接口,抽象方法,静态方法
- SQL语句优化技术分析 整理他人的
- 搜狗输入法linux版怎么安装,Linux 搜狗输入法的安装(Ubuntu版)
- python小游戏贪吃蛇下载_python实现贪吃蛇小游戏
- maven报错The forked VM terminated without saying properly goodbye. VM crash or System.exit called
- 计算机组成原理全书知识总结
- 64Mbit SOIC8封装SPI接口的国产串行SRAM EMI7064
- 项目案例:吃货联盟,订餐系统
- android stdudio OpenCV NDK 开发环境搭建 之找查条形码
- 前端之vue3使用动画库animate.css(含动画、过渡)
- Gradle sync failed: Could not find xxxx.xx 之 强制刷新Gradle dependencies
- 如何理解3D动画中的欧拉角以及死锁?
- 设计高质量的论文插图
- 键盘上各种符号的英文名称与发音
热门文章
- java9新特性有json吗,磨剑三年,跳票一年,Java9新功能有哪些神通?
- f5 会话保持 负载均衡_f5会话保持的.doc
- 项目-字典-更新字典分组
- 获取代理电脑的https证书方法
- Hadoop工具让数据仓库迁移更轻松
- 从零到实现Shiro中Authorization和Authentication的缓存
- [转]虚方法(virtual)和抽象方法(abstract)的区别
- Windows7中被大家忽略的实用七大功能
- UBNT Bullet M2说明书
- 反转链表详解(Python)