一个优秀的程序必备的几种设计模式: