C++设计模式
什么是设计模式?
“每一个模式描述一个在我们周围不断重复发生的问题以及该问题的解决方案的核心。这样,你就可以一次一次地使用该方案而不必做重复劳动。”——Christopher Alexander
软件设计固有的复杂性
“建筑商从来不会去想给一栋已建好的100层高的的楼房底下新修一个小地下室——这样做花费极大而且注定要失败。然而令人惊奇的是,软件系统的用户在要求作出类似改变时却不会仔细考虑,而且他们认为这只是需要简单编程的事。”——Object -Oriented Analysis and Design with Applications
软件设计复杂的根本原因——变化
如何解决复杂性?
分解——分而治之,当大问题分解为多个小问题,将复杂问题分解为多个简单问题。
抽象——由于不能掌握全部的复杂对象,我们选择忽视它的非本质细节,而去处理泛化和理想化的对象模型。
重新理解面向对象
C++面向对象设计原则