zoukankan      html  css  js  c++  java
  • 浅谈面相对象与设计模式

    用C写出的代码就是面向过程?用OC、java写出的代码就是面向对象?

    设计模式真的有用吗?

    面向过程与面向对象的区别

    说到面向对象不得不提面向过程,现在基本都是敏捷开发,快速迭代是敏捷开发的最大特点,基本所有的敏捷开发人员都在使用面向对象语言,这是为什么呢?面向对象与面向过程相比有哪些优点呢?

    说到面向过程与面向对象有什么区别,网上有很多观点和看法。

    大概有这么几种:

    1. 面向过程是一件事“该怎么做“,面向对象是一件事“该让谁来做”,然后那个“谁”就是对象,他要怎么做是他自己的事,反正最后一群对象合力能把事做好就行了。

    2. 面向对象: 狗.吃(屎)
      面向过程: 吃.(狗,屎)

    3. 面向过程,自己造电脑。面向对象,自己组装电脑。

    以上几种观点说的都有一些道理,但是都太抽象难以理解,不适合程序员的思维方式。

    程序员的喜欢直接,有图有代码有真相,下面我以程序员的视角,从技术的角度分享一下我对面向对象的理解:

    举个例子便于说明:

    场景:有两个很类似的页面,从服务器获取数据并显示(基本所有的app都有这样的场景):

                                        

    共同点:

    1.从服务器获取列表数据并分页显示。

    2.都有排序功。

    不同点:

    1.请求的url不同,数据解析也不同。

    2.cell的展示样式有差异。

    3.sectionheader展示不同。

    对于这样的问题,下面看看面相过程和面相对象都是如何实现的。  

    上面是面向过程的两种实现方式。最大的问题是重复的代码和ifese非常多,这也是面向过程语言的同病,这就导致了程序难以扩展、难以维护、稳定性差。

                                     

    这个是面向对象的实现。面向对象利用继承、封装、多态等手段,把公共部分抽象到父类里处理,差异部分派生到各个子类处理,这样做的好处是修改或扩展各个子类不会影响到其它子类,派生类只需要关注自己特有的业务部分。这就是面向过程和面相对象的差别。

    总结:

    用C语言写出的代码一定不是面向对象设计的,因为C语言可以实现封装但无法利用继承和多态的优点。只有很好的利用了封装、继承、多态才是真正的面向对象设计,这样设计的程序才能更佳的稳定、更加的便于复用、更佳的易于维护。这就是为什么面向对象越来越火而面向过程越来越弱的原因。

    设计模式真的有用吗

    首先,需要说一下面对对象的目的,面向对象的目标就是要使程序更加的稳定,更加的便于维护,更佳的便于扩展。为了达到这样的目标,面向对象使用的手段是封装、继承、多态。为了使用这些手段,面向对象有6大原则单一职责原则、开闭原则、迪米特法则、依赖倒置原则、里氏替换原则、接口隔离原则。这样原则太抽象了,于是出现了面向对象的23种设计模式,设计模式就是在这6大原则的基础上总结的一些方法。

    设计模式就是前人在遇到不同问题总结的一些不同解决方法。我们在遇到类似问题的

    设计模式是前人在遇到问题的时候总结的一些解决方法。那么在我们遇到类似问题的时候,就可以利用这些成熟的解决方案解决问题。

    下面是一个不太恰当的比喻,以功夫来理解面向对象。

  • 相关阅读:
    网络编程
    WPF DataGrid点击有效区域Check
    WPF DataGrid显示表格中编辑Check数据
    WPF DataGrid显示按上下键移动数据、多个CheckBox勾选
    Python 下载小说到本地
    WPF 条件不等于时触发改变颜色
    WPF 反射 排序 、启动定时器等
    # WPF DataGrid文本编辑验证
    Nginx 与 X-Forwarded-For
    如何正确设置nginx中remote_addr和x_forwarded_for参数
  • 原文地址:https://www.cnblogs.com/max5945/p/5736893.html
Copyright © 2011-2022 走看看