Factory method pattern in Kotlin

Implementation of https://en.wikipedia.org/wiki/Factory_method_pattern#Java in Kotlin using companion object

package org.myorg

fun main(args: Array<String>) {
    val ordinaryGame = MazeGame.makeOrdinaryMazeGame()
    val magicGame = MazeGame.makeMagicMazeGame()
}

abstract class Room {
    fun connect(room: Room) {
    }
}

class MagicRoom : Room()

class OrdinaryRoom : Room()

class MazeGame private constructor(room1: Room, room2: Room) {
    private val rooms = mutableListOf<Room>()

    init {
        room1.connect(room2)
        rooms.add(room1)
        rooms.add(room2)
    }
    companion object {
        fun makeMagicMazeGame() = MazeGame(MagicRoom(), MagicRoom())
        fun makeOrdinaryMazeGame() = MazeGame(OrdinaryRoom(), OrdinaryRoom())
    }
}

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s


A %d blogueros les gusta esto: