工廠方法
在基於類的程式設計中,工廠方法模式是一種建立模式,它使用工廠方法來處理建立物件的問題,而無需指定將要建立的物件的確切類。維基百科參考
protocol SenderProtocol
{
func send(package: AnyObject)
}
class Fedex: SenderProtocol
{
func send(package: AnyObject)
{
print("Fedex deliver")
}
}
class RegularPriorityMail: SenderProtocol
{
func send(package: AnyObject)
{
print("Regular Priority Mail deliver")
}
}
// This is our Factory
class DeliverFactory
{
// It will be responsable for returning the proper instance that will handle the task
static func makeSender(isLate isLate: Bool) -> SenderProtocol
{
return isLate ? Fedex() : RegularPriorityMail()
}
}
// Usage:
let package = ["Item 1", "Item 2"]
// Fedex class will handle the delivery
DeliverFactory.makeSender(isLate:true).send(package)
// Regular Priority Mail class will handle the delivery
DeliverFactory.makeSender(isLate:false).send(package)
通過這樣做,我們不依賴於類的真實實現,使得 sender()
對於消費它的人完全透明。
在這種情況下,我們需要知道的是傳送方將處理傳遞並公開名為 send()
的方法。還有其他幾個優點:減少類耦合,更容易測試,更容易新增新行為,而無需更改誰正在使用它。
在物件導向的設計中,介面提供了抽象層,便於對程式碼進行概念性解釋並建立阻止依賴性的屏障。維基百科參考