一、工厂模式概述
工厂模式是创建型设计模式,提供了一种创建对象的方式,无需指定具体的类。通过定义一个接口或抽象类来创建对象,但将具体的实例化过程延迟到子类或工厂类中。
使用工厂模式可以增加代码灵活性,可以根据不同条件创建不同对象,也具备扩展性,新增产品时,只需增加相应的工厂类或产品类,无需修改现有代码。
二、工厂模式实现
使用抽象的编程思想来实现。
public abstract class PorscheCar{
var name : String
public PorscheCar(name:String)
{
this.name = name
}
public open func showInfo():Unit
}
public class Porsche911 <: PorscheCar
{
public Porsche911(name:String)
{
super(name)
}
public func showInfo():Unit
{
println("${this.name}")
}
}
public class Porche718 <: PorscheCar{
public Porche718(name:String)
{
super(name)
}
public func showInfo():Unit
{
println("${this.name}")
}
}
public abstract class Factory{
public open func createPorche():PorscheCar
}
public class porche911Factory <: Factory
{
public func createPorche():PorscheCar
{
return Porsche911("保时捷911")
}
}
public class porche718Factory <: Factory{
public func createPorche():PorscheCar
{
return Porche718("保时捷718")
}
}
public func exec()
{
var p911F : Factory = porche911Factory()
var p911 : PorscheCar = p911F.createPorche()
p911.showInfo()
var p718F : Factory = porche718Factory()
var p718 : PorscheCar = p718F.createPorche()
p718.showInfo()
}
main(): Int64 {
exec()
return 0
}
结果为:
上述代码中设计了两个抽象类,一个是产品类,一个是工厂类,产品类用来描述产品的信息,而工厂类则用来生成产品也就是创建产品类的对象,则就可以实现需要生产哪个产品就用哪个工厂,抽象类也提供了比较好的灵活性,出了新的产品可以方便的加入进去。