开放封闭原则在OC中的实现办法

开放封闭原则就是在开发过程中开发实体(类,模块,函数等)应该可以扩展,但是不能修改。是面向对象的核心设计所在。
在开发APP或者说任何项目时,需求的不变是每个程序员的梦想,但是这是不现实的,所以我们得拥抱变化,应对变化,我们如果可以把代码设计的相对容易修改,在新的需求来的时候我们不至于推到重写,很多人都会说修改比重写更费时间,如果每次更改需求或者有新需求都要去原来代码上大量修改,不仅仅让自己苦不堪言,也会给测试带来很大工作量,然后就浪费很多时间,不停加班,把不到妹子!开放封闭原则可以让我们不再害怕变化。

代码要容易维护又不容易出问题,就要多扩展,少修改。俗话说磨刀不误砍柴工,在设计的时候可以先猜测最有可能发生变化的地方(可能频繁发生变化的地方),然后创建抽象来隔离变化。这需要我们在项目中多思考,多积累经验。

在OC中可以用来实现开放封闭的有1.继承,2.category,3.protocol
protocol能提供一套公用的接口,并不提供具体的实现,只负责生命不管谁去实现,如何去实现,这样任意的类在需要的时候都可以用不同的方式去实现接口中的方法,比如我们最常用的tableView,tableView的各种展现出来的样子,都是我们通过他的一系列datasource和delegate的具体实现来赋予的,可以说是非常经典的例子。

category是对一个类的一种补充,扩展,就像一个东西的基本功能完成了,可以用category为这个类添加不同的组件以满足不同情况的需求,跟protocol的区别是category即提供接口也提供具体的实现。category可以把一个比较复杂庞大的类分成不同模块,在不同的类中来实现。category有个缺点就是当一个方法已经在其他的category中定义过,这洋酒无法确定那个定义的方法会被调用。如果一个方法在不同的情况下需要不同的实现,请使用protocol。

继承,他既可以像protocol一样只提供纯粹的接口,也可以像category一样提供具体的实现,可以扩展实例变量,也可以对已经实现的方法进行改写,继承很强大,但是使用继承进行扩展是一种耦合度很高的的行为,对父类是完全的依赖,如果继承体系太过复杂,很难维护,如果仅仅是对类进行扩展,不建议使用继承。在具体使用时要自己来分析确定,耦合性,依赖性一定要低。继承使用最多的应该是在界面或者功能上需要复用时,把相似的地方提取到基类里面,然后各个子类继承这个基类,实现各自的特殊部分,在写一个功能或者界面时思考一下以后是否有可能复用,在应对以后的需求时会让自己从容很多。category可以被继承,在某个父类中定义了category,那么他的所有子类都具有该category

这是第一篇技术博客,参考了很多大神的内容,但是也加入一些自己的感悟,一字一字打出来也是一个思考的过程。原来觉得没有什么高深的内容写出来被人看见只会被人笑话,现在觉得不管再浅显的东西,总结一下写出来总会有更深的理解。

特别鸣谢,参考博客链接: http://www.cnblogs.com/ziyi--caolu/p/4806953.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值