Builder模式的思考(Effective Java)】的更多相关文章

<Effective Java>(第2版)中第二条中提到:遇到多个构造器参数时要考虑用构建器.在复习static关键字和内部类时回头看了一下,这才明白了为什么要用静态内部类来做处理,这里记录一下. 先看再看一下<Effective Java>书中的例子,例子中是用一个类表示包装食品外面显示的营养成分标签.这些标签中有几个是必需的:每份的含量.每罐的含量以及每份的卡路里,还有超过20个可选域:总脂肪量.饱和脂肪量.转化脂肪.胆固醇.钠等.如果用一般的处理方式,直接把这些参数在构造器中…
Builder模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们.用户不知道内部的具体构建细节.Builder模式是非常类似抽象工厂模式,细微的区别大概只有在反复使用中才能体会到. 为何使用建造者模式 是为了将构建复杂对象的过程和它的部件解耦.注意:是解耦过程和部件. 因为一个复杂的对象,不但有很多大量组成部分,如汽车,有很多部件:车轮.方向盘.发动机,还…
一.引言 在Android开发中,采用Builder模式的代码随处可见,比如说Android系统对话框AlertDialog的使用或者是Android中的通知栏(Notification)的使用,又比如说在一些常用的第三方库中也随处可见其踪迹,比如说一些常用的网络请求库如OkHttp或者是retrofit,又或者是图片加载库Glide中也不缺乏它的应用. 为什么Builder模式在Android或是Java开发中这么火呢?因为它相较于构造函数或者是Get/Set方法,它的灵活性和封装性上都比较有…
还没有看过Builder模式的作用,看过一篇介绍Builder模式的文章,这里是关于Builder模式的思考:思考是否有比新建一个内部类更好的方法,首先想到的是 package xyz.n490808114.test; public class BuilderTest{ String name; int age; int high; int weight; int speed; public BuilderTest name(String name){ this.name = name; ret…
疯狂的类构造器 最近栈长在做 Code Review 时,发现一段创建对象的方法: Task task = new Task(112, "紧急任务", "处理一下这个任务", 90, 3, 1, 36, "刘主管", 18, "客服1", "11, 12, 13", "客服3, 客服4, 客服5", true, new Date(), new Date(), new Date(), ne…
疯狂的类构造器 最近栈长在做 Code Review 时,发现一段创建对象的方法: Task task = new Task(112, "紧急任务", "处理一下这个任务", 90, 3, 1, 36, "刘主管", 18, "客服1", "11, 12, 13", "客服3, 客服4, 客服5", true, new Date(), new Date(), new Date(), ne…
最近看<Effective Java>这本被很多同行称为神作的书,但是这本书很多地方缺少了举例不好懂,下面是关于我对书上知识的理解. 一.<Effective Java>中文版2  ——第二章  第2条:遇到多个构造器参数时要考虑用构建器 原文语段:遗憾的是,JavaBeans模式自身有着很严重的缺点.因为构造过程被分到了几个调用中,在构造过程中JavaBean可能处于不一致的状态.类无法仅仅通过检验构造器参数的有效性来保证一致性.试图使用处于不一致状态的对象,将会导致失败,这种失…
yiaz 读书笔记,翻译于 effective java 3th 英文版,可能有些地方有错误.欢迎指正. 静态工厂方法和构造器都有一个限制:当有许多参数的时候,它们不能很好的扩展. 比如试想下如下场景:考虑使用一个类表示食品包装袋上的营养成分标签.这些标签只有几个是必须的--每份的含量.每罐的含量.每份的卡路里,除了这几个必选的,还有超过 20 个可选的标签--总脂肪量.饱和脂肪量等等.对于这些可选的标签,大部分产品一般都只有几个标签的有值,不是每一个标签都用到. (telescoping co…
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用. 条目2:当构造方法参数过多时使用builder模式 静态工厂和构造方法都有一个限制:它们不能很好地扩展到很多可选参数的情景.请考虑一个代表包装食品上的营养成分标签的例子.这…
在设计模式中对Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成.那么,在实际的开发过程中,我们哪些地方适合用到Builder模式呢?其中使用Builder模式来替代多参数构造函数是一个比较好的实践法则. 我们常常会面临编写一个这样的实现类(假设类名叫DoDoContact),这个类拥有多个构造函数, DoDoContact(String name); DoDoContact(String name, int age); DoDoContact(S…