工厂模式
1.简单工厂模式
/**
* 汽车的共同特质
*/
trait Car{
def run()
}
/**
* 创建一个宝马类
*/
class BaoMa extends Car {
override def run(): Unit = println("宝马车开走了")
}
/**
* 创建一个奔驰类
*/
class Benz extends Car {
override def run(): Unit = println("奔驰车开走了")
}
/**
* 简单工厂类 生产汽车
*/
object SimpleCarFactory {
def createCar(demand:String)= demand match {
case "Baoma"=>new BaoMa
case "Benz"=>new Benz
case _=>null
}
}
总结:简单工厂模式比较鸡肋,不符合开闭原则。可以用工厂方法模式进行改善
2.工厂方法模式
工厂方法模式与简单工厂最大的区别就是在原来的基础行多了一个工厂接口,
然后增加多个工厂实现类去对应不同的产品类(汽车类)
/**
* 工厂特质
*/
trait CarFactory{
val createCar:Car
}
/**
* 宝马工厂 生产宝马
*/
class BaoMaFactory extends CarFactory{
override val createCar: Car = new BaoMa
}
object BaoMaFactor