溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Kotlin和Java建造者模式怎么實(shí)現(xiàn)

發(fā)布時(shí)間:2021-11-30 13:51:40 來(lái)源:億速云 閱讀:145 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“Kotlin和Java建造者模式怎么實(shí)現(xiàn)”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Kotlin和Java建造者模式怎么實(shí)現(xiàn)”吧!


Kotlin和Java建造者模式怎么實(shí)現(xiàn)


  1. 指揮者(Director)直接和客戶(hù)(Client)進(jìn)行需求溝通;

  2. 溝通后指揮者將客戶(hù)創(chuàng)建產(chǎn)品的需求劃分為各個(gè)部件的建造請(qǐng)求(Builder);

  3. 將各個(gè)部件的建造請(qǐng)求委派到具體的建造者(ConcreteBuilder);

  4. 各個(gè)具體建造者負(fù)責(zé)進(jìn)行產(chǎn)品部件的構(gòu)建;

  5. 最終構(gòu)建成具體產(chǎn)品(Product)。


建造模式很簡(jiǎn)單,一組裝電腦為例,由于電腦元件一般不會(huì)發(fā)生太大的改變,但電腦組裝是一個(gè)復(fù)雜的過(guò)程。
UML圖:

Kotlin和Java建造者模式怎么實(shí)現(xiàn)

1.創(chuàng)建建造請(qǐng)求

abstract class Builder {    //第一步:裝CPU
    //聲明為抽象方法,具體由子類(lèi)實(shí)現(xiàn)
    abstract fun buildCPU()

    //第二步:裝主板
    //聲明為抽象方法,具體由子類(lèi)實(shí)現(xiàn)
    abstract fun buildMainboard()

    //第三步:裝硬盤(pán)
    //聲明為抽象方法,具體由子類(lèi)實(shí)現(xiàn)
    abstract fun buildHD()

    //返回產(chǎn)品的方法:獲得組裝好的電腦
    abstract fun getComputer(): Computer
}
 

2.將建造請(qǐng)求委派到建造者進(jìn)行實(shí)現(xiàn)

class ConcreteBuilder : Builder() {    //創(chuàng)建產(chǎn)品實(shí)例
    private var computer = Computer()    //組裝產(chǎn)品
    override fun buildCPU() {
        computer.add("組裝CPU")
    }

    override fun buildMainboard() {
        computer.add("組裝主板")
    }

    override fun buildHD() {
        computer.add("組裝硬盤(pán)")
    }    //返回組裝成功的電腦    override fun getComputer(): Computer {        return computer    }
}
 

3.指揮組裝元件

class Director {
    //指揮裝機(jī)人員組裝電腦
    fun construct(builder: Builder) {

        builder.buildCPU()
        builder.buildMainboard()
        builder.buildHD()
    }
}
 

4.定義具體產(chǎn)品類(lèi)(Product):電腦

class Computer {    //電腦組件的集合
    private val parts = ArrayList<String>()    //用于將組件組裝到電腦里
    fun add(part: String) {
        parts.add(part)    }    fun show() {        for (i in parts.indices) {            println("組件" + parts[i] + "裝好了")
        }
        println("電腦組裝完成,請(qǐng)驗(yàn)收")


    }
}
 

客戶(hù)端調(diào)用

object BuilderTest {    @JvmStatic
    fun main(args: Array<String>) {        //逛了很久終于發(fā)現(xiàn)一家合適的電腦店
        //找到該店的老板和裝機(jī)人員
        val director = Director()
        val builder = ConcreteBuilder()        //溝通需求后,老板叫裝機(jī)人員去裝電腦
        director.construct(builder)        //裝完后,組裝人員搬來(lái)組裝好的電腦
        val computer = builder.getComputer()        //組裝人員展示電腦給小成看
        computer.show()

    }
}

結(jié)果輸出

Kotlin和Java建造者模式怎么實(shí)現(xiàn)

每一個(gè)具體建造者都相對(duì)獨(dú)立,而與其他的具體建造者無(wú)關(guān),因此可以很方便地替換具體建造者或增加新的具體建造者,用戶(hù)使用不同的具體建造者即可得到不同的產(chǎn)品對(duì)象。

到此,相信大家對(duì)“Kotlin和Java建造者模式怎么實(shí)現(xiàn)”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI