设计思路
- 使用构建器模式,定义一个构建器类,负责构建游戏角色的配置。
- 利用DSL(领域特定语言),让代码更具可读性和灵活性,通过函数扩展的方式为构建器提供DSL风格的配置方法。
关键代码实现
// 游戏角色类
data class GameCharacter(
val name: String,
val initialHealth: Int,
val skills: List<String>
)
// 构建器类
class GameCharacterBuilder {
private var name: String = ""
private var initialHealth: Int = 0
private val skills: MutableList<String> = mutableListOf()
fun name(name: String) {
this.name = name
}
fun initialHealth(health: Int) {
this.initialHealth = health
}
fun skill(skill: String) {
skills.add(skill)
}
fun build(): GameCharacter {
return GameCharacter(name, initialHealth, skills)
}
}
// DSL扩展函数
fun gameCharacter(block: GameCharacterBuilder.() -> Unit): GameCharacter {
val builder = GameCharacterBuilder()
builder.block()
return builder.build()
}
使用示例
fun main() {
val character = gameCharacter {
name("Warrior")
initialHealth(100)
skill("Slash")
skill("Shield Bash")
}
println(character)
}