Swift学习笔记<一> 利用协议分离接口

在OC中,这个协议是具有传值回调以及代理委托的作用, 公共接口一般由子类集成父类,子类去重写实现(多态), 或者由Category去编写一个公共基类的分类的一个公共方法去实现. 在swift里,只需要通过协议就可以将这些分散在各处的代码统一由同一个接口来进行调用,这样的好处是代码易于测试和管理,轻松实现解耦合
protocol  AnimalActionProtcol  {
    func voiceAction() ->Void
    func eatFood() ->Void
}

class Cat : AnimalActionProtcol {
    func eatFood() {
        print("猫粮~~你也要来一口嘛?~~")
    }

    func voiceAction() {
        print("喵喵喵~~~")
    }
}

class Dog : AnimalActionProtcol  {
    func eatFood() {
        print("这口狗粮我不吃~~~")
    }
    func voiceAction() {
        print("汪汪汪~~~")
    }
}

class Pig : AnimalActionProtcol {
    func eatFood() {
        print("吃多了~~就该宰了")
    }
    func voiceAction() {
        print("欧威欧威~~~~")
    }
}

class Person: AnimalActionProtcol {
    func eatFood() {
        print("人是铁 饭是钢~~~")
    }
    func voiceAction() {
        print("66666~~~~")
    }

}



class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let cat = Cat()
        let dog = Dog()
        let pig = Pig()
        let person = Person()

        impMethod(obj: cat)
        impMethod(obj: dog)
        impMethod(obj: pig)
        impMethod(obj: person)

    }

/** 写成类型 因为它们都是遵守协议的 传入的对象可以想象成是
一个代理者(遵守协议的干活的人) 相当于是卖身契,走进这个方法后就
换一层身份了*/
    func impMethod(obj : AnimalActionProtcol)  {
        obj.eatFood()
        obj.voiceAction()
    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,395评论 30 472
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,025评论 25 709
  • 第一章.面向对象与面向协议编程 本书是关于面向协议编程。当苹果2015年的开发者大会上发布了Swift2,他们也宣...
    酱油不爱醋阅读 5,262评论 0 7
  • 不要害怕拒绝他人,当一个人开口提出要求的时候,他的心里早就预备好了两种答案。所以,给他其中任何一个答案,都是意料中...
    你我123阅读 1,355评论 0 0
  • 如何阅读一首诗 昨天谈了诗的主题,纯属个人见解,不具有任何代表性。今天趁着手热再来谈谈如何阅读一首诗。 当我看到一...
    先锋诗潮阅读 3,780评论 2 1

友情链接更多精彩内容