在Kotlin中,工廠模式是一種創建型設計模式,它提供了一種在不指定具體類的情況下創建對象的方法。工廠模式通常包括一個抽象產品(Abstract Product)和一個或多個具體產品(Concrete Product)以及一個工廠接口(Factory Interface)。
以下是在Kotlin中使用工廠模式的示例:
abstract class Shape {
abstract fun area(): Double
}
class Circle(val radius: Double) : Shape() {
override fun area(): Double {
return Math.PI * radius * radius
}
}
class Rectangle(val width: Double, val height: Double) : Shape() {
override fun area(): Double {
return width * height
}
}
interface ShapeFactory {
fun createShape(type: String): Shape
}
class CircleFactory : ShapeFactory {
override fun createShape(type: String): Shape {
return if (type == "circle") Circle(1.0) else throw IllegalArgumentException("Invalid shape type")
}
}
class RectangleFactory : ShapeFactory {
override fun createShape(type: String): Shape {
return if (type == "rectangle") Rectangle(1.0, 1.0) else throw IllegalArgumentException("Invalid shape type")
}
}
fun main() {
val circleFactory = CircleFactory()
val rectangleFactory = RectangleFactory()
val circle = circleFactory.createShape("circle")
val rectangle = rectangleFactory.createShape("rectangle")
println("Circle area: ${circle.area()}")
println("Rectangle area: ${rectangle.area()}")
}
在這個示例中,我們定義了一個抽象產品Shape
,兩個具體產品Circle
和Rectangle
,以及一個工廠接口ShapeFactory
。我們還創建了兩個具體工廠CircleFactory
和RectangleFactory
,它們分別負責創建Circle
和Rectangle
對象。最后,我們在main
函數中使用這些工廠來創建對象并計算它們的面積。