个人观点:对于 python 来说,它本来就是一个很灵活的语言,要想实现相应的功能,并不一定非得用这些设计模式的概念。
而且每个设计模式都有各自的使用场景和优缺点,正确理解,领悟各自的适用场景才是最重要的。
创建模式
简单工厂模式
对于一个方法,需要在多种情景下调用。如发送消息:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31class SendModule:
"""
发生消息的原型
"""
def send(self):
pass
class EMail(SendModule):
"""
具体的应用场景1
"""
def send(self):
print("通过邮件发送")
class SMS(SendModule):
"""
具体的应用场景2
"""
def send(self):
print("通过短信发送")
class SendFactory:
"""
这里就是简单工厂的部分
在这里判断用哪个情景来发送消息
"""
def send(self, type):
if type == 1:
EMail().send()
else:
SMS().send()
更实际的,直接将SendFactory用方法来封装。
这里只返回哪个类对象,send方法让具体的业务调用。1
2
3
4
5
6
7
8
9
10def sender_factory(type):
"""
这里就是简单工厂的部分
在这里判断用哪个情景来发送消息
"""
def send(self):
if type == 1:
return EMail()
else:
return SMS()
工厂模式
不需要用 sender_factory 来选择用哪个情景,直接根据具体的业务场景来调用 EMail().send() / SMS().send()。
免去了改 sender_factory 逻辑的烦恼。
其实简单工厂和工厂,主要的核心还是在于有一个相同的方法send,分别用于多种类。
抽象工厂模式
将组装的部分(产品)放在一个工厂类里面,组成一个实体。
也可以认为前面的工厂模式是这里的产品。
注意,各产品的统一方法,各工厂的统一方法。
1 | class 鸭子头: |
单例模式
对 python ,class 默认就是单例
优点:
- 优化内存占用
建造者模式
原型模式
结构型模式
建造者模式
建造者模式
建造者模式
建造者模式
建造者模式
建造者模式
- 参考 *
- https://www.cnblogs.com/geek6/p/3951677.html
- 《精通python设计模式》