Реализации на Kotlin

Abstract factory

Общая реализация на языке Kotlin

Определение общего интерфейса инструментов

interface ITool {
    fun use()
}

Непосредственная реализация конкретных видов инструментов

abstract class AbstractHacksaw(
    private val type: String,
    private val name: String = SAW_NAME
) : ITool {
    override fun use() {
        println("Instrument: $name can be used for $type")
    }

    companion object {
        protected const val SAW_NAME: String = "Saw"
    }
}

Реализация абстрактных фабрик инструментов

interface AbstractFactory {
    fun createHacksaw(): AbstractHacksaw
    fun createHammer(): AbstractHammer
}

Main

fun main() {
    val metalFactory = MetalFactory()
    val metalHammer: MetalHammer = metalFactory.createHammer()
    metalHammer.use()
    val metalHacksaw: MetalHacksaw = metalFactory.createHacksaw()
    metalHacksaw.use()

    val woodFactory = WoodFactory()
    val woodenHammer: WoodenHammer = woodFactory.createHammer()
    woodenHammer.use()
    val woodHacksaw: WoodHacksaw = woodFactory.createHacksaw()
    woodHacksaw.use()
}

Last updated

Was this helpful?