用C写出的代码就是面向过程?用OC、java写出的代码就是面向对象?
设计模式真的有用吗?
面向过程与面向对象的区别
说到面向对象不得不提面向过程,现在基本都是敏捷开发,快速迭代是敏捷开发的最大特点,基本所有的敏捷开发人员都在使用面向对象语言,这是为什么呢?面向对象与面向过程相比有哪些优点呢?
说到面向过程与面向对象有什么区别,网上有很多观点和看法。
大概有这么几种:
-
面向过程是一件事“该怎么做“,面向对象是一件事“该让谁来做”,然后那个“谁”就是对象,他要怎么做是他自己的事,反正最后一群对象合力能把事做好就行了。
-
面向对象: 狗.吃(屎)
面向过程: 吃.(狗,屎) -
面向过程,自己造电脑。面向对象,自己组装电脑。
以上几种观点说的都有一些道理,但是都太抽象难以理解,不适合程序员的思维方式。
程序员的喜欢直接,有图有代码有真相,下面我以程序员的视角,从技术的角度分享一下我对面向对象的理解:
举个例子便于说明:
场景:有两个很类似的页面,从服务器获取数据并显示(基本所有的app都有这样的场景):
共同点:
1.从服务器获取列表数据并分页显示。
2.都有排序功。
不同点:
1.请求的url不同,数据解析也不同。
2.cell的展示样式有差异。
3.sectionheader展示不同。
对于这样的问题,下面看看面相过程和面相对象都是如何实现的。
上面是面向过程的两种实现方式。最大的问题是重复的代码和ifese非常多,这也是面向过程语言的同病,这就导致了程序难以扩展、难以维护、稳定性差。
这个是面向对象的实现。面向对象利用继承、封装、多态等手段,把公共部分抽象到父类里处理,差异部分派生到各个子类处理,这样做的好处是修改或扩展各个子类不会影响到其它子类,派生类只需要关注自己特有的业务部分。这就是面向过程和面相对象的差别。
总结:
用C语言写出的代码一定不是面向对象设计的,因为C语言可以实现封装但无法利用继承和多态的优点。只有很好的利用了封装、继承、多态才是真正的面向对象设计,这样设计的程序才能更佳的稳定、更加的便于复用、更佳的易于维护。这就是为什么面向对象越来越火而面向过程越来越弱的原因。
设计模式真的有用吗
首先,需要说一下面对对象的目的,面向对象的目标就是要使程序更加的稳定,更加的便于维护,更佳的便于扩展。为了达到这样的目标,面向对象使用的手段是封装、继承、多态。为了使用这些手段,面向对象有6大原则单一职责原则、开闭原则、迪米特法则、依赖倒置原则、里氏替换原则、接口隔离原则。这样原则太抽象了,于是出现了面向对象的23种设计模式,设计模式就是在这6大原则的基础上总结的一些方法。
设计模式就是前人在遇到不同问题总结的一些不同解决方法。我们在遇到类似问题的
设计模式是前人在遇到问题的时候总结的一些解决方法。那么在我们遇到类似问题的时候,就可以利用这些成熟的解决方案解决问题。
下面是一个不太恰当的比喻,以功夫来理解面向对象。