你進入「我怎麼實現它」之前,你應該認真考慮爲什麼要實現它。
門面設計模式
Facade模式所使用的,否則共同創建簡單的接口,使您的生活更輕鬆複雜系統。通常 - 正如您可能已經注意到的那樣,您可以使用它來管理多個類(或者甚至具有接口的子系統)。
這意味着在實踐中你會在任何地方使用門面模式,你經常使用相同的樣板代碼(這是很常見的),所以可以用更短的東西來代替,或者如果門面將爲您提供更乾淨的代碼,更簡單的管理。此外,你可以用它來屏蔽內部實現,所以如果某個子系統改變它們的工作方式,那麼你的更高層次的功能仍然保持不變,並且發揮相同的作用。
如何建立正面
有一些great examples on wikipedia,我建議你讀一遍,尤其是簡單的計算機的代碼示例。我用它作爲例子爲雨燕版本:
// --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
// MARK: - Definitions
private let BOOT_ADDRESS = 0
// --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
// MARK: - Subsystems
class CPU {
func freeze() { }
func jump(position : Int64) { }
func execute() { }
}
class Memory {
func load(position : Int64, data : NSData) { }
}
class HardDrive {
func read(position : Int64, data : NSData) -> NSData { }
}
// --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
// MARK: - Facade
class Computer {
// Create all computer subsystems
let cpu = CPU()
let memory = Memory()
let hdd = HardDrive()
// Implement reason why you are creating this facade
func start() {
self.cpu.freeze()
self.memory.load(BOOT_ADDRESS, data: NSData())
self.cpu.jump(BOOT_ADDRESS)
self.cpu.execute()
}
}
現在你可以看到,你有CPU,內存和硬盤,內部所有的複雜的東西。但你只關心門面 - 電腦。這可以讓你不用想着如何做到這一點,像這樣啓動計算機:
// Create computer object
let computer = Computer()
// Start computer (how is it done is none of your bussiness)
computer.start()
現在,你如何爲您的特定問題,做到這一點是你的,但你應該遵循類似的思路。別忘了,如果它真的能幫助你,你應該只使用Facade。不要試圖僅僅因爲你知道它是什麼而使用它(因爲人們常常會濫用這些模式並最終導致可怕的代碼)。
希望它有幫助!
你能更具體嗎?你真正的問題是什麼? :)你是問如何在iOS中實現這些特定模式或什麼? –
是的。我如何在Swift中構建門面模式? 我有一個類(A)裏面包含20個方法。類(B)包含20種方法。如何實現模式外觀? – Diego