面向对象软件设计原则(一) —— 引子
“面向对象软件设计”这个术语及其相关话题对于很多开发人员来说已经是耳熟能详了,甚至听腻了。但是,对不住各位,为了吸引眼球和引起“异性” 注意,本座还是落入俗套选择这个热门话题作为本博客的开张炒作篇目。请见谅,也希望各位看官能放下架子,略读一下本系列的所有文章再喷,可赞可弹可BS, 但勿吐槽,毕竟不想因为本座的文字噪音降低看官的SZ,伤不起呀!!
言归正传,在如何阐述“面向对象软件设计”这个问题上,本座琢磨了良久,毕竟命题宽泛,表达方式和层次多样。最终决定用相对通俗,以本座的读书和工作经历,在中等层次上进行阐述。
本座从十年多前走出校门之时就确信软件架构(设计)、数据结构和算法是软件的根本核心,也是衡量个人技术水平的终极标准。因此,从一开始本座就特别关注软件设计方面的知识,本座读过的三本书恰巧体现了软件设计开发的几个方面:
- 编程开发:《Design Patterns Elements of Reusable Object-Oriented Software》
- 软件设计:《Agile Software Development: Principles, Patterns, and Practices》
- 系统架构:《Pattern-Oriented Software Architecture》
若从编程开发的层次谈软件设计不够全面,有只见树木不见森林之嫌;而从系统架构的层次去谈则显得过于专业,受众不多,会失去大部分读者。因此本系列文 章通过本座多年前阅读:《Agile Software Development》的笔记整理和心得体会来阐述面向对象软件设计原则。
最后,本座要表达一个重要的观点:任何知识的学习过程都要经历“守”(依葫芦画瓢,获得感觉)、“破”(掌握规律,懂得比较、选择)、“离”(突破条框,自成一派,无招胜有招)三个阶段,在学习的过程中不要墨守成规,需要结合实际情况不断思考和提炼知识,突破自己。
- 自信来源于哪里?来源于掌握足够多的知识。
- 求知欲望来源于哪里?来源于未掌握的知识。知识就像一个圆圈,掌握知识越多圆圈越大,圆圈越大则圈外的世界也越大。