设计模式是面向对象语言特有的内容,是我们在面临某一类问题时候固定的做法,设计 模式有很多种,比较流行的是:GOF(Goup Of Four)23 种设计模式。当然,我们没有 必要全部学习,学习几个常用的即可。 对于初学者,我们学习两个最常用的模式:工厂模式和单例模式。
工厂模式实现了创建者和调用者的分离,使用专门的工厂类将选择实现类、创建对象进 行统一的管理和控制。
运行结果:
<__main__.Benz object at 0x021C5770>
<__main__.BMW object at 0x021C5790>
单例模式(Singleton Pattern)的核心作用是确保一个类只有一个实例,并且提供一
个访问该实例的全局访问点。
单例模式只生成一个实例对象,减少了对系统资源的开销。当一个对象的产生需要比较
多的资源,如读取配置文件、产生其他依赖对象时,可以产生一个“单例对象”,然后永久
驻留内存中,从而极大的降低开销。
单例模式有多种实现的方式,我们这里推荐重写__new__()的方法。
#单例模式
class
MySingleton:
__obj =
None
__init_flag =
True
def
__new__
(
cls
, *args, **kwargs):
if
cls
.__obj ==
None
:
cls
.__obj =
object
.
__new__
(
cls
)
return
cls
.__obj
def
__init__
(
self
,name):
if
MySingleton.__init_flag:
print
(
"init...."
)
self
.name = name
MySingleton.__init_flag =
False
a = MySingleton(
"aa"
)
print
(a)
b = MySingleton(
"bb"
)
print
(b)
运算结果:
init....
<__main__.MySingleton object at 0x01E15610>
<__main__.MySingleton object at 0x01E15610>