美文网首页收藏设计模式
Android设计模式:建造者模式

Android设计模式:建造者模式

作者: 搬码人 | 来源:发表于2021-11-02 21:52 被阅读0次

背景:小王去商城购买一台组装的台式机。
执行过程
1、电脑商城的老板(Director)向小王询问需求。(打游戏、办公or学习)
2、了解了小王的需求以后,电脑城的老板将小王的需求划分为各个部件(Builder)的需求。(CPU、Memory、HD)
3、指挥装机人员(ConcreteBuilder)去构建组件
4、将组件组装成小王需要的电脑(Computer)

package 设计模式2

/**
 *@Description
 *@Author PC
 *@QQ 1578684787
 */

/**
 * 需要build的对象Computer
 */
class Computer(){
    //存储组装的电脑
    var parts:MutableList<String> = ArrayList()
    //添加电脑组件
    fun addComputerPart(part:String){
        parts.add(part)
    }

    //显示电脑的配置
    fun show(){
        println("Computer的配置:")
        parts.forEach {
            println(it+"")
        }
    }
}
/**
 * 抽象的Builder:抽象出定义组装电脑的过程
 */

abstract class Builder{
    //1、组装过程
    //第一步:装CPU
    abstract fun buildCPU()
    //第二步:装内存
    abstract fun buildMemory()
    //第三部:装硬盘
    abstract fun builderHD()

    //2、返回组装的结果
    abstract fun create():Computer
}
/**
 * 具体的Builder:组装员
 */
class ConcertBuilder():Builder(){
    //待build的对象
    private val computer = Computer()
    override fun buildCPU() {
        computer.parts.add("Intel-CPU")
    }

    override fun buildMemory() {
        computer.parts.add("三星-Memory")
    }

    override fun builderHD() {
        computer.parts.add("希捷-硬盘")
    }

    override fun create(): Computer {
        return computer
    }
}
/**
 * 老板:Director
 */

object Director{
    //让装机员装机
    fun splice(builder: Builder){
        builder.apply {
            this.buildCPU()
            this.buildMemory()
            this.builderHD()
        }
    }
}
/**
 * 测试
 */
fun main() {
    //找到装机人员
    val builder = ConcertBuilder()
    //老板让组装人员装机
    Director.splice(builder)
    //获取组装完毕的电脑
    val computer = builder.create()
    //显示电脑的信息
    computer.show()

}

测试结果


执行结果

优点

  • 易于解耦:将产品与产品创建过程进行解耦,可以使用相同的创建过程来得到不同的产品。也就是说细节依赖抽象。
  • 易于精确控制对象的创建:将复杂产品的创建不走分解在不同的方法中,使得创建过程更加清晰。
  • 易于扩展:增加新的具体建造者无需修改原有类库的代码,已与扩展,符合“开闭原则”。

缺点

  • 建造者模式所创建的产品一般具有较多的共同点,其组成部分相似;如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定的限制。
  • 如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大。

应用场景

Android中的AltertDialog就是使用了建造者模式来构建AlertDialog。

  • 需要生成的产品对象又复杂的内部结构,这些产品对象具备共性;
  • 隔离复杂对象的创建和使用,并使得相同的创建过程可以创建不同的产品。

参考文章:
Android设计模式-建造者模式

相关文章

  • 建造者模式(部件构造)

    目录 建造者模式的理念 从 POJO 到建造者模式的思考 怎么来实现建造者模式 建造者模式在Android源码中的...

  • Android常用设计模式有哪些?

    Android常用设计模式有哪些? 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式...

  • Retrofit

    Retrofit设计模式 动态代理,装饰模式,建造者模式,抽象工厂模式,适配器模式 建造者模式创建Retrofit...

  • Android设计模式:建造者模式

    将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 (1)Build模式创建实例 定义一个...

  • Android设计模式-建造者模式

    UML关系简单介绍UML简单使用的介绍创建型设计模式Android设计模式-单例模式Android设计模式-工厂模...

  • Android设计模式:建造者模式

    背景:小王去商城购买一台组装的台式机。执行过程1、电脑商城的老板(Director)向小王询问需求。(打游戏、办公...

  • 建造者模式(Builder 模式)

    Android进阶之设计模式 建造者模式( Builder 模式) 定义:将一个复杂对象的构建与它的表示分离,使得...

  • Android中涉及的模式

    我的Java设计模式-建造者模式 我的Java设计模式-观察者模式 重学设计模式之单例模式

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

网友评论

    本文标题:Android设计模式:建造者模式

    本文链接:https://www.haomeiwen.com/subject/qcpfzltx.html