backbone(-2) 理解面向对象
来源:互联网 发布:网络测网速 编辑:程序博客网 时间:2024/06/06 03:19
什么是OO
我一直以为自己很好的掌握了OO,所以大胆地在面试时不从程序的角度来解释OO。但事实是我只是对已经知晓的理论作了一种形而上学的概括,在理论的应用时并没有得心应手,所以在我变成web前端程序员之后,真正开始用框架来开发丰富页面之前,非常有必要梳理自己的认知。
OO抽象出的对象是以实体属性为基础,对象管理自己内部的变化并针对这些变化改变自己的呈现,对象之间完全是隔离的,只有数据在对象之间跑动。对象就像细胞一样,被细胞膜封装,细胞间隙液则是数据流的一种,细胞液中没有直接控制细胞行为的武器,只有各种化学元素,细胞对这些化学元素的反应是封闭在细胞内部、由细胞本身提供的。细胞之间的通讯则完全依赖数据流的变化(数据流包含所有外部刺激:光、温度、体液中的物质集成信息、辐射、震动……)
为什么我们难以运用OO
朱元璋是出了名的控制狂,但他的思想很朴素,他实际是想用面向对象的方法制造出一套行政制度,于是设定了各种文书,行政单位之间通过文书来驱动,行政单位政务相对完整独立——这是面向对象手段中典型的数据驱动方式……但结果是这套制度让官员崩溃了,要做的事太多,数据流根本没有办法流畅,朱老大在把人当机器使呢。
为什么把人当机器使就会出问题呢?因为人不可能和机器一样稳定,true和false通过与门肯定能得出false,备胎和女神结合却不一定会生出自己的孩子……涉及到人的地方,对象本身的功能不见得有用,因此控制A对象的方法不一定在A对象内部,而是在B对象身上,人的江湖都是这样。
我最近读的一本书叫《三体》,三体人思维是透明的,不能理解人类使用欺诈的方式。就像我们在接触面向对象之前一直适应的是面向过程,业务驱动数据,过程是主体。忽然之间让我们转变思维,以对象封装数据,业务被切割成碎片分散到各个对象中,用控制数据流来组合对象形成业务——在一定程度上这是和人类世界动作的相反方式。
虽然我们在一开始接触的时候就记住了解了面向对象,但是如果没有体会到面向对象的好处之前,业务驱动仍然是我们大脑中default,而爽之前一定要痛一次的,这是第一次的普遍规则,所以你痛过了吗?反正我是痛过了……
运用OO
- 1.极大减化了重复代码,提高了代码的重用性。
- 2.对象的呈现变化由自己控制,分散了整体业务的关注点,减化了业务的复杂度。
- 3.高扩展维护性,因子对象提供的是基础功能,它们与具体的业务不耦合,因此可以随便组合,因子的添加变化呈现高度可分离性。
- backbone(-2) 理解面向对象
- 理解面向对象2
- Java-----2、理解面向对象
- 第2章 理解面向对象
- 第2章 理解面向对象
- 理解面向对象
- 理解面向对象
- 理解“面向对象”
- 面向对象理解
- 面向对象进一步理解
- 面向对象基本理解
- 理解“面向对象”
- 理解面向对象
- 面向对象的理解
- 理解面向对象
- 面向对象的理解
- 面向对象的理解
- 面向对象理解
- Android 自定义View实现多行RadioGroup单选(多选)
- LeetCode: Integer to Roman
- PhotoView开源项目剖析
- Sublime Text 3常用插件安装(含Emmet插件指令介绍)
- Python的__name__与__main__函数
- backbone(-2) 理解面向对象
- linux下tomcat init脚本
- ZOJ Problem Set - 1188 DNA Sorting
- 提高Java中锁的性能
- mysql order by field 按指定字段排序
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结,看完全明白了
- nginx新手配置$document_root
- [C++]LeetCode: 118 Find Peak Element (二分查找 寻找数组局部峰值)
- 并查集模版