目录
(3)工厂里造出来新车,提到4s店,客户下单之后,就可以取到车,车就能跑能停
(1)策略指的就是为了达到某一目的而采取的多种手段或者方法。
假设某公司维护着一些客户资料,需要在该公司有新产品上市或者举行新活动的时候,通知客户现通知客户的方式有两种:电话通知,邮件通知 type应如何设计该系统的客户通知部分
1.概述
简单来说设计模式就是一种方法(套路),是软件开发人员在软件开发过程中面临的一般问题的解决方法
使用设计模式是为了重用代码,让代码更容易被他人理解,保证代码的可靠性。
比如说:比如说建筑行业,中西方建筑各有自己的风格,每种风格都有自己的建筑方法(套路),只要按照不同的建筑方法,就能建成不同的建筑。
再比如说:肯德基麦当劳快餐店为什么全球的口味都一样呢,就是做食品的套路相同。
2.常用的设计模式
单例模式 | 保证只有一个对象 |
工厂模式 | 用来创建对象 |
策略模式 | 定义一系列算法(逻辑),将每一个算法封装起来(一个算法创建一个类),并让它们可以相互替换。此模式让算法的变化,不会影响到使用算法的客户. |
3.单例模式
(1)保证只有一个对象
比如说:世界上只有一个太阳
(2)正常情况下一个类的多个对象
(3)创建单例模式的方式
1)使用__new__()魔法方法,创建一个传统的单例模式
- 创建不成功的情况:创建出了两个不同的对象
- 创建成功的情况:只能创建一个对象
# 这种方法可以创建单例模式,即创建了相同的对象,但是写法不规范
class Sun(object):
def __new__(cls, *args, **kwargs):
super().__new__(cls)
sun1 = Sun()
sun2 = Sun()
print(id(sun1))
print(id(sun2))
class Sun(object):
instance = None
def __new__(cls, *args, **kwargs):
if not cls.instance: # not None就是True,没有对象就创建一个新对象
cls.instance = super().__new__(cls)
# 调用父类object的__new__()方法,把创建的新对象传给cls.instance
return cls.instance # 有对象就返回原来有的那个对象
sun1 = Sun()
sun2 = Sun()
print(id(sun1))
print(id(sun2))
# sun1和sun2的地址一样
2)导入模块
导入singleton模块的sun对象,不管导入几次,sun对象都是一样的,地址也是一样的