要深刻理解开源代码，必先掌握丰富的设计模式