Builder模式——项目中最常见的设计模式之一

     Builder模式介绍

        Builder模式是一种一步一步创建一个复杂对象的设计模式,我认为这种设计模式的精髓就主要有两点:其一,用户使用简单,并且可以在不需要知道内部构建细节的情况下,就可以构建出复杂的对象模型;其二,对于设计者来说,这是一个解耦的过程,这种设计模式可以将构建的过程和具体的表示分离开来。

     Builder模式的使用场景

        1.相同的方法,不同的执行顺序,产生不同的时间结果时。
        2.多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不同时。
        3.产品类非常复杂,或者产品类中的调用顺序不同产生了不同的作用,这个时候用建造者模式非常适合。
        4.当初始化一个对象特别复杂,如参数多,切很多参数都具有默认值时。

     Builder模式分析

        我们为什么要把代码的构建和表示分离开来?1.增加代码的可读性;2.方便维护。举一个例子,安卓中非常常用的AlertDialog就是Builder模式,我们知道,一个Dialog可以有非常多的属性和参数,例如title,icon,message, positiveButton,negativeButton等十几个参数,如果这些参数都放在构造函数里,那么这个方法将会有很多参数,为了完成这个函数,需要一次性准备好所有的参数,很容易写着写着就乱了。同时为了适配,还需要写很多重载的构造函数,类会很乱。而如果使用builder模式,不需要一次性准备好所有的参数,完全可以一个一个准备,代码易懂,方便非常多。

     举例说明

        有一个Person类,有name,age,job,sex等等N多属性,这里我用s1,s2,s3...s10代替。

        接下来在Person类的内部定义一个静态的Builder类,并且定义对应的s1-s10方法,方法返回类型都是Builder

        最后,增加一个build()方法,将所有的属性都设置进去
        这样,含有多个参数的Builder模式的Person类就完成了,接下来我们看看用法。

        代码的可读性高了很多,试想一下如果new了一个Person类,构造函数里传了10个参数,看起来就非常头疼,以后想改某一个值的话,还要去找代码看相应的含义。而Builder模式的可读性就非常高,只需要去修改相应的Builder静态类中的方法即可。

     总结

        Builder模式与传统的模式相比,并不是完全胜出的,相比之下,Builder模式的代码量会比正常多不少,但是随之带来的好处是代码的可读性和可维护性。但是,往往一个好的设计模式或架构,就是在牺牲某一种能力从而大大增强另一种能力,例如,牺牲一定的可读性,增加项目的可扩展性等等这样的方式。因此,在参数较为复杂,构造对象相对繁琐的情况下,一定要首先考虑使用Builder模式。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值