怎样面向对象编程(上)
来源:互联网 发布:ubuntu 退出命令行 编辑:程序博客网 时间:2024/04/26 18:25
题目有些大,是标题党。此类文章多不好驾驭,鄙猿何知,勉为此文,以期将自己平日写的代码的所思所悟,写成清楚可读的文字。
- 什么是面向对象编程
相比大陆的译名,我更喜欢Object-Oriented Programming的台湾译名——“物件导向编程”。
“面向对象编程”是一个太自以为是的译名——仿佛面对一个问题,高高在上的程序员可以自由地选择不同的方式解决他,可以选择面向结果,也可以选择面向对象。见过太多难以维护的代码,我深以为高高在上、不以为然、面向结果的心态正是灾难之源。
“物件导向编程”则恰到好处地指明了“物件”是主宰,卑微的程序员当以敬畏之心,在“物件”的引导下书写代码,以求少出错——恰如一个面对老师的提问,细心作答的小学生。
譬如要从一个XML文件获取想要的信息,面向结果的程序员会随手写一个正则之流的匹配,再取个子字符串,也许自知不够优雅,but it works!
以我写正则匹配的经验,一切正则匹配都是基于程序员的假设,而假设必然不可靠。
依据XML文件自身的结构,去获取信息,如疱丁解牛,符合物件的本质,自然便能适应多变的XML文件。
- 什么是类
举个Geek一些的例子,文本编辑器是一个类,这个类的作用就是:
-
- 编辑文本
- 保存到硬盘
那么为什么要为Vim设计一个子类呢?
-
- 增加功能
Vim除了基本的文本编程,还可以调用外界的脚本,甚至能通过一些插件调用Eclipse的代码补全功能,这显然是基本的文本编辑器所无的。
-
- 实现多态
譬如文本编辑器类有个保存函数:
public void save() { writeDataToDisk();}
那么Vim类的保存函数大致要这样写:
public void save() { command("w"); super.save();}
诚然可以不为Vim设计一个子类,而在save方法中通过条件判断要不要执行w命令,但这不符合事件的本质,这样的代码难以扩展,难以维护。
<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 怎样面向对象编程(上)
- 怎样面向对象编程(上)
- 面向对象编程(上)
- ## 面向对象编程上 ##
- 面向对象编程(上)
- Python面向对象编程总结(上)
- Python面向对象编程总结(上)
- Python面向对象编程总结(上)
- Python3 基础:面向对象编程(上)
- 面向对象(上)
- 面向对象(上)
- 面向对象(上)
- 面向对象(上)
- 面向对象(上)
- 面向对象(上)
- 面向对象(上)
- 面向对象(上)
- 面向对象(上)
- Java Collections Framework的Fail Fast机制及代码导读
- 批处理清理VS工程目录(递归删除Debug, Release, ipch目录及*.sdf文件)
- HttpEntity的使用
- Hadoop HDFS文件操作
- EJB3.0中,实体BEAN默认映射到表中字段的名称
- 怎样面向对象编程(上)
- ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is und
- Configuration类简介
- x86 assembly
- iOS通过iTunes search检测版本更新,并提示用户更新!
- 2013年7月11日 20:55:06 动画之一
- JAVA网络编程 TCP、UDP
- document.all判断浏览器是否是IE
- JSON 和 XML (lao lai)