在開發(fā)過程中感局,我們難免會遇到一些功能相近的需求申尼,如果為此創(chuàng)建不同的類的話,我們工程里面就會有很多很多不必要的類盔夜,自己調(diào)用的時候也難免會分不清,這個時候我們可以嘗試使用類簇的設(shè)計模式弟跑,來構(gòu)建自己所需要類眯勾。
我們可以參考蘋果的NSNumber類, [NSNumber numberWithInt:1]等等夭织。這些方法都是用一些外部接口,在類內(nèi)部的方法實施具體的實現(xiàn)吠撮,創(chuàng)建出不同的子類尊惰。這樣的好處就是只需要調(diào)用一個類的響應(yīng)方法就可以了。
以動物為例子
import UIKit
enum AnimalName : Int {
case Dog = 0
case Cat
}
class Animal: NSObject {
public class func animalWithName(_ animalName : AnimalName) -> Animal {
if animalName == AnimalName.Dog {
return Dog()
}
return Cat()
}
func run () {
print("animalRun")
}
}
class Dog : Animal {
override func run() {
print("dogRun")
}
}
class Cat : Animal {
override func run() {
print("catRun")
}
}
接下來再調(diào)用一下看看效果
func testCreatObjectWithClassCluster () {
let dog = Animal.animalWithName(.Dog)
let cat = Animal.animalWithName(.Cat)
dog.run()
cat.run()
}
dogRun
catRun