一种设计模式是针对于某一类设计问题的,已被证实确实可靠有效的一种设计的通用思路和解决方案;它包含了一些用来在特定场景下解决一般设计问题的类和相互通信的对象。它所归纳的用以解决某一类问题的方案的有效性都是已经被很多的实际设计所证明了的。同时,它也凝聚了许多经验丰富的程序员的设计经验。一个熟悉这些模式的设计者不需要再去发现它们,而能够立即将它们应用于设计问题中。设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。设计模式帮助你做出有利于系统复用的选择,避免设计损害了系统复用性。通过提供一个显式类和对象作用关系以及它们之间潜在联系的说明规范,设计模式甚至能够提高已有系统的文档管理和系统维护的有效性。简而言之,设计模式可以帮助设计者更快更好地完成系统设计。设计模式并不描述链表和h a s h表那样的设计,尽管它们可以用类来封装,也可复用,也不包括那些复杂的、特定领域内的对整个应用或子系统的设计。