2.遇到多个构造器参数时要考虑用构建器(Builder模式)

创建对象的三种模式:

静态工厂和构造器模式:所有参数传递到构造函数中,不能很好地扩展到大量的可选参数。

JavaBean模式:调用无参数构造器,然后调用setter方法来设置每个必要的参数以及可选参数。

Builder模式:客户端用参数调用构造器(或静态工厂方法),得到一个builder对象,客户端在builder对象上调用类似setter方法。

一、构造器模式:

本不想设置的参数,但还是得为它们传值。

二、JavaBean模式:

调用一个无参数构造器,然后调用setter方法来设置每个必要的参数以及可选参数。

解决构造器模式可选参数问题。

缺点构造过程中被划分到了几个调用中,可能处于不一致的状态。无法通过检验构造器参数的有效性来保证一致性。

无法将类设置为不可变(即final类型),所以要去确保线程安全

三、Builder模式:

在NutritionFacts中通过builder对象来初始化参数:

调用方法:

NutritionFacts cocaCola=newNutritionFacts.Builder(240,8).

calories(100).sodium(35).carbohydrate(27).build();

能保证安全性(设置参数为final类型),保证可读性。

缺点:必须先创建它的构建器(即Builder对象)。注重性能的情况下,构建器开销是个问题

后记:builder模式应用在javaBean对象也要看场合,不是所有的javaBean对象都适合用builder模式来构建,比如在社交类APP开发中,一个用户对象的信息通常是可变的,比如它的网名,性别,个人签名等等信息,而一些需要认证的信息比如个人姓名等,一旦设置就不允许随便更改的,所以这样的话一个javaBean对象就可能包含着可变和不可变的对象,具体情况需要具体分析。

https://www.jianshu.com/p/03dc33fd11cb

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容