这学期开始认真学习设计模式这门课,老师课上说了一句话:在设计模式出现以前,软件开发是门艺术,只有那些有天赋的程序员才能写有优雅的代码;设计模式被人们总结出来之后,软件开发就成了一门技术了,有着固定的模式可以参考,没有天赋的程序员也可以写出很好的代码。
先不管这句话的正确与否,但是有一点是确定的,软件的开发过程中,设计是非常重要的。有一个好的设计能够将软件开发失败的机率降到最低。
设计模式不应该被视为软件开发的说明书,照着那一条一条的模式套用并不一定能写出来好的程序,正确的态度应该是把它们作为软件设计的经验和建议来看。
最近看了下那本《敏捷软件开发:原则、模式与实践》,感觉确实是本好书,可以看出来作者对软件开发的功力非常丰富。我发现作者在说明软件开发过程的时候大量使用了UML,以前我都认识这些东西很虚,很麻烦。现在看这本书的时候却有点了不同的体会,哈哈,看来是我以前层次太低了。UML实在是一个好东西,清晰明了,用来描述复杂的系统的时候真有种拨云见日的感觉。
下面简单写一下UML的基本知识:
1.识别参与者
2.抽取用例
用例中有两点需要说明一下:扩展(extension)/包含(include)
扩展:它们之间互不引用,仅仅插入到被扩展用例中
包含:包含用例会引用被包含的用例
基本用例完成之后,可以根据参与者将其分类组织起来,形成系统的边界图来汇总显示。
3.领域模式(domain)
这是一种类似于UML类图,但是它们之间有很大的差别,它并不会对应于编码中的类(class)。
4.类之间的关系
关联:以一条线连接两个类表示,表示它们之间相互包含。更常见的是一种带箭头单向关联关系。
聚合:以一个白色菱形箭头表示类之间的“整体/局部”关系,同样聚合关系的一个变体“组合”,以一个黑色菱形箭头表示,这也是一种“整体/局部”关系,但是“部分”不能脱离“整体”而存在,“整体”也必须负责管理“部分”的生存期。
举例:家庭和人是聚合关系,而电脑与CPU是组合关系