在静态语言比如Java中被人熟知的21种设计模式可以谓大名鼎鼎,而为什么到了动态语言比如Python中设计模式不再突出,这篇文章讲进行分析
在静态语言中为了不让代码写死,为可能的变化预留灵活性,从而很多模式都利用接口,高层代码面向抽象编程,只有当实际运行的时候代码高层代码才执行实例化的具体对象的方法,而在动态语言中语言本身就具有动态性,于是不再需要显式的接口
静态语言(Java) | 动态语言(Python) |
---|---|
优点:由于显式面向接口,于是在IDE中可以跳转到特定的接口,然后通过接口又可以找到实现这个接口的某些类,建立代码的联系更方便直观 | 优点:省事,不需要显式专门写个接口。方便的高级数据结构list,dict,set,方便构造json |
缺点:费事,需要更多的代码,类型声明,显示接口定义。没有方便的list,dict,set,构造json显得臃肿,不自然 | 缺点:只有当代码实际运行的时候在知道某个变量到底是什么,于是对某个方法,或者某个类在没运行的情况下不容易理解 |
-
也许有人觉得面对复杂的代码我们情愿多写一点东西,让代码更加方便理解,这确实不错,那么动态语言是否真的写不出强壮并且方便理解的代码呢?
实际情况并不是这样,通过足够的单元测试和模拟测试,针对每个类或者方法有对应的单元测试,需要理解代码&#x