iOS 类簇的简单使用

2018-08-29  本文已影响0人  ChanYuCung
    在开发过程中,我们难免会遇到一些功能相近的需求,如果为此创建不同的类的话,我们工程里面就会有很多很多不必要的类,自己调用的时候也难免会分不清,这个时候我们可以尝试使用类簇的设计模式,来构建自己所需要类。
    我们可以参考苹果的NSNumber类, [NSNumber numberWithInt:1]等等。这些方法都是用一些外部接口,在类内部的方法实施具体的实现,创建出不同的子类。这样的好处就是只需要调用一个类的响应方法就可以了。

以动物为例子

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")
    }
}

接下来再调用一下看看效果

    func testCreatObjectWithClassCluster () {
        let dog = Animal.animalWithName(.Dog)
        let cat = Animal.animalWithName(.Cat)
        
        dog.run()
        cat.run()
    }
dogRun
catRun
上一篇下一篇

猜你喜欢

热点阅读