Android设计模式详解之建造者模式

前言

Builder模式是一种创建型设计模式

定义:将一个复杂对象的创建与它的表示分离,使得同样的构造过程可以创建不同的表示。

使用场景:

  1. 相同的方法,不同的执行顺序,产生不同的事件结果时;
  2. 多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时;
  3. 初始化一个对象特别复杂,如参数较多,且很多参数都具有默认值时;

UML类图:
建造者模式UML

  • Product:产品类;
  • Builder:抽象Builder类,规范产品的组建,一般由子类实现具体的组建过程;
  • ConcreteBuilder:具体的Builder类;
  • Director:统一组装过程;

实现方式

UML图中类较多,关系也比较复杂,一般情况下,我们通常会简化相关实现,这里我们举个简单例子,

电脑一般由主板、操作系统、显示器几部分组成,那使用建造者模式构建一台电脑可以这样表示:

class Computer private constructor() {

    /**
     * 主板
     */
    private var board: String? = null

    /**
     * 操作系统
     */
    private var os: String? = null

    /**
     * 显示器
     */
    private var display: String? = null


    class Builder {
        private val computer = Computer()

        fun build(): Computer {
            return computer
        }

        fun setBoard(board: String?): Builder {
            computer.board = board
            return this
        }

        fun setOs(os: String?): Builder {
            computer.os = os
            return this
        }

        fun setDisplay(display: String?): Builder {
            computer.display = display
            return this
        }
    }

    override fun toString(): String {
        return "Computer(board=$board, os=$os, display=$display)"
    }
}

构建Computer对象:

Computer.Builder()
            .setBoard("Intel")
            .setOs("MacOs")
            .setDisplay("Retina")
            .build()

Android源码中的建造者模式

  • AlertDialog的构建过程
  • OkHttpClient的构建过程

总结

建造者模式的优缺点:
优点:

  1. 良好的封装性,使用建造者模式可以使客户端不必知道产品内部组成的细节;
  2. 建造者独立,容易扩展;

缺点:

产生多余的Builder以及Director对象,消耗内存;

结语

如果以上文章对您有一点点帮助,希望您不要吝啬的点个赞加个关注,您每一次小小的举动都是我坚持写作的不懈动力!ღ( ´・ᴗ・` )

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值