jasper的技术小窝

关注DevOps、运维监控、Python、Golang、开源、大数据、web开发、互联网

设计模式在python中的应用

作者:jasper | 分类:python | 标签:     | 阅读 1320 次 | 发布:2014-12-20 11:57 p.m.

python中需要设计模式么?

我一直以为,作为一个开发者,设计模式是一门必修课。若能在开发中熟练运用各种设计模式,那么代码的质量会有显著的提高。但是我在网上搜了一下,鲜有对于python的设计模式的介绍,大概是因为python太灵活了,以至于不必要使用设计模式。而且经典的设计模式是面向对象领域的,python本质还是一门脚本语言,虽然自称在python中“万物皆对象”,但是在实际运用中,对于面向对象是比较弱的,所以也可以说它是多范式的,但是正所谓的多范式,导致的最后结果却是没有范式,而显得不伦不类。

当然也有这样的说法,说设计模式并不是优雅的编程,主要作用是为了弥补语言本身的不足,就像java一样,之所以java设计模式这么重,很大一部分原因是因为语言的表达能力太弱,设计模式本身不是描述业务逻辑的,把业务逻辑隐藏在一个个模式之下,感觉就像在跟这个语言斗争。

不争论这个问题,其实设计模式并不是一个高大上的东西,它只是前人的一些实践经验。但是在大工程开发中,总感觉不能很好的构造好python的代码结构,不能很好的复用代码,但是设计模式可以帮我们实现这一点。因此可以这么说,在python设计模式并不是一定要用,而更重要的是要学习其中的思想,学会抽象化,也是结构清晰,便于日后的扩展。

python中怎么实现设计模式?

在上一段中其实已经提到了,python是一种很灵活的语言,它灵活到有时候一句话就能实现一些设计模式(比如说反射)。但是对于一些设计模式,它又显得特别乏力。这其中一个最大的原因就是在python中没有接口!!!

大家应该都知道,在java中有很多设计模式都是依赖于接口的。那在python中呢,当然我们可以用python的多继承特性来“伪装”成接口。但是举个例子,比如策略模式, 在python里面因为first-class function+动态类型+变长参数和键参数的共同作用,显示的声明一个公共接口就变得没有必要了。所以在python中实现设计模式,没有必要去硬套java中的那一套。我们学设计模式是为了学习它的思路,而并不是非得生硬地去按套路实现。

学习设计模式的python实现有什么好处?

这个自然是益处多多,除了能学到这些设计模式之外,还能加深一些对python的一些高级编程的技巧,因为在实现中会接触到一些之前没怎么用到的东西,比如元类,一些内置函数等等。

所以在接下来的博客里,我会陆陆续续地写一些设计模式在python中的实现,当然主要还是借鉴一些前辈的。而在这其中,我会分别比较java、python都是怎么去实现的。因为看样子我以后是会把python和java都作为一个常规的开发语言了,也趁机能够多多看一下java,一举多得哇!!!


转载请注明出处:http://www.opscoder.info/python_desgin_pattern.html

其他分类: