学习一个知识,首先要知道它是做什么的,它的应用场景是什么。
编程领域的设计模式对于开发大佬们应该很熟悉,但对于非测试开发来说基本用不到,但也不能不知道啊。
设计模式(Design
pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
从描述来看,设计模式就是大神们在解决问题时总结出来的一套最佳解决方案,我觉得这更像一种分类,每个类别下面有着该类问题的解决方案,大神们将他们整理好,让后人学习。
设计模式有很多很多,其中最流行的有23种,在这些最流行的里面最简单的有2种,单例模式和工厂模式。
先看单例模式,因为其他的我也不会!
我们日常生活中遇到的单例模式有什么?最接近生活的是听音乐,我们手机上的音乐播放器一次只能播放一个音乐,不可能你的手机一次放多个音乐。这种类似的场景就可以使用单例模式。
那单例模式到底是什么呢?
它的核心是无论你new了多少个对象,返回的对象地址都是同一个!按照这个说法我们的思路就可以是在new一个对象时,让他返回第一个已经new好的对象的地址。
Python中创建对象都是自动完成了,它先调__new__
创建内存地址和返回地址,在__init__
初始化数据。
正常情况下,每次创建一个对象都会有一个对应的id
class MySingle():
def __init__(self):
pass
m1 = MySingle()
print(m1)
m2 = MySingle()
print(m2)
<__main__.MySingle object at 0x0000000001DDCC88>
<__main__.MySingle object at 0x00000000029F2F48>
但我们改让他只返回同一个怎么处理呢?网上有很多方法,我找了个能看懂的模仿了下
class MySingle():
instance = None
def __new__(cls, *args, **kwargs):
if cls.instance is None:
cls.instance = super().__new__(cls)
return cls.instance
def __init__(self):
pass
m1 = MySingle()
print(m1)
m2 = MySingle()
print(m2)
<__main__.MySingle object at 0x00000000029D1108>
<__main__.MySingle object at 0x00000000029D1108>
主要的思路是在__new__
开辟内存地址时校验下是不是已经创建过了,如果未创建就创建一个,如果创建了就返回已经创建好的。
其实测试上基本用不到,但有必要混个脸熟!!