在Kotlin中,工廠(chǎng)模式是一種創(chuàng)建型設(shè)計(jì)模式,它提供了一種在不指定具體類(lèi)的情況下創(chuàng)建對(duì)象的方法。工廠(chǎng)模式通過(guò)定義一個(gè)用于創(chuàng)建對(duì)象的接口,并將該接口的實(shí)現(xiàn)委托給子類(lèi)來(lái)完成。這樣,當(dāng)需求發(fā)生變化時(shí),只需修改工廠(chǎng)類(lèi)而不需要修改客戶(hù)端代碼。
以下是使用Kotlin實(shí)現(xiàn)工廠(chǎng)模式并應(yīng)對(duì)需求變更的示例:
interface Product {
fun use()
}
class ConcreteProductA : Product {
override fun use() {
println("Using ConcreteProductA")
}
}
class ConcreteProductB : Product {
override fun use() {
println("Using ConcreteProductB")
}
}
interface Factory {
fun createProduct(): Product
}
class ConcreteFactoryA : Factory {
override fun createProduct(): Product {
return ConcreteProductA()
}
}
class ConcreteFactoryB : Factory {
override fun createProduct(): Product {
return ConcreteProductB()
}
}
fun main() {
val factoryA = ConcreteFactoryA()
val productA = factoryA.createProduct()
productA.use()
val factoryB = ConcreteFactoryB()
val productB = factoryB.createProduct()
productB.use()
}
當(dāng)需求發(fā)生變化時(shí),例如需要添加新產(chǎn)品或修改現(xiàn)有產(chǎn)品的行為,只需執(zhí)行以下步驟:
這樣,工廠(chǎng)模式使得應(yīng)對(duì)需求變更變得更加容易,因?yàn)榭蛻?hù)端代碼與具體的產(chǎn)品類(lèi)和工廠(chǎng)類(lèi)解耦,只需關(guān)注抽象接口即可。