zoukankan      html  css  js  c++  java
  • 面向对象并不是必要的

     
    程序开发并非一定要面向对象不可,面向对象是一种方式,但是不是唯一的方式,这种方式很多时候有用,不代表任何时候都是最高效的,更不是唯一的真理。
     
    面向对象将相关的状态属性和操作方法放在一个实体中,起到了归类和分而治之的作用。
     
    对于一个系统来说,这个是最根本的方法。但是面向对象的分而治之并不完美。面向过程也有分而治之的思想和能力,这就是模块开发。对象是复杂的,他有生命过程,有复制克隆的需要,有保持状态的需要,他是一个复杂的实体。而很多时候我们不需要这么多的东西,而只要一个函数,一个过程,一个状态。
     
    第二个,面向对象的类型系统非常复杂。
     
    第三个,面向对象的封装不彻底,默认的实践是接口和实现同为一个对象实体,如果要分离处界面和实体就显得难以编程。
     
    程序开发的技巧是:简单明了,分而治之,抽象化编程。
     
    面向对象在这三个方面都有违反的表现,比如如果建立多个对象,对象间的相互关系变得非常复杂。程序员需要掌握非常多得实体概念。
     
    分而治之就是面向对象对界面的分离和封装上没有做到很严格。没有一个系统的解决方案。父类对子类的影响,对象直接都是直接操作。
     
    抽象化并不是面向对象的专利,比如unix系统的文件就是典型的非面向对象的抽象。抽象是算法的范畴,一个出色的算法,必然高度抽象他操作的对象,让算法适应更多的场合,而对象的类型系统反而会限制了抽象。
     
     
     
  • 相关阅读:
    js高级-闭包
    js作用域
    js执行上下文与执行上下文栈
    js原型及原型链
    去除数组中重复的元素值
    树[省选联考2020]
    GDOI2020 游记
    Problem b[HAOI2011]
    分零食[JSOI2012]
    移动金币「SDOI2019」
  • 原文地址:https://www.cnblogs.com/Nobel/p/2029357.html
Copyright © 2011-2022 走看看