目录

创建型:工厂模式

释义

工厂模式,一个工厂可以生产一类产品,客户在订单中告诉工厂产品的具体要求,工厂为客户生产相应的产品。

/%E5%88%9B%E5%BB%BA%E5%9E%8B%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F/%E5%88%9B%E5%BB%BA%E5%9E%8B%EF%BC%9A%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F.resources/B45B790A-096A-4D99-B835-CC32CFD9802E.png
工厂模式

这是一家生产磨具Shape的模具厂ShapeFactory,Shape包括Circle、Square、Rectangle三种形状。客户告诉模具厂自己想要的形状,模具厂就会为客户生产对应的形状。

产品类

1
interface Shape {}

产品子类

Circle

1
open class Circle : Shape {}

Square

1
open class Square : Shape {}

Rectangle

1
open class Rectangle : Shape {}

工厂

通过参数type告诉Factory我们需要的Shape类型。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
class ShapeFactory {

    companion object {
        val CIRCLE = 0x0
        val SQUARE = 0x1
        val RECTANGLE = 0x2
    }
    
    // 传入type参数告诉工厂生产对应的Shape
    fun getShape(type: Int): Shape {
        when(type) {
            CIRCLE -> object : Circle()
            SQUARE -> object : Square()
            RECTANGLE -> object : Rectangle()
        }
    }
}

使用

1
2
3
4
5
fun main() {
    // 生产圆形模具Circle
    val shapeFactory: ShapeFactory = ShapeFactory()
    val circle: Circle = shapeFactory.getShape(ShapeFactory.CIRCLE)
}