惠州网站制作案例,企业系统开发去哪家,大旺建设局网站,手表网站 云一、单例模式单例#xff1a;单个实例#xff0c;确保某个类只有一个实例存在举例#xff1a;1、登录app#xff0c;当前的登录对象#xff0c;只能有一个2、音乐播放器#xff0c;正在播放的歌曲类而言#xff0c;只能有一个实例1 import my_util # 被导入的模块会从…一、单例模式单例单个实例确保某个类只有一个实例存在举例1、登录app当前的登录对象只能有一个2、音乐播放器正在播放的歌曲类而言只能有一个实例1 import my_util # 被导入的模块会从头到尾执行一遍23 o1 my_util.a4 o2 my_util.a5 o3 my_util.a67 print(o1)8 print(o2)9 print(o3)101112 class Person:13 __obj None # 单例1415 def __new__(cls, *args, **kwargs): # 创建实例对象 --- 实例1617 if not cls.__obj:18 cls.__obj super().__new__(cls)19 return cls.__obj2021 def __init__(self): # 自己,本身; 谁调用谁就是self; 实际上,在调用init时, 实例对象已经被创建出来了;22 pass232425 p1 Person() # 1. 调用new方法,创建实例对象, 开辟内存空间, 存储对象 2. 自动调用init方法26 p2 Person()2728 print(p1) # __main__.person object at29 print(p2) # __main__.person object at3031 # print(Person.__obj)二、工厂模式根据不同的条件, 创建不同的实例对象;汽车父类兰博基尼子类法拉利子类路虎子类工厂类方法传入不同的钱给你返回不同的汽车对象商场类属性工厂对象方法卖小汽车通过工厂对象卖小汽车1 class Car:2 def run(self):3 print(车行驶)45 def stop(self):6 print(车制动)789 class Lamborghini(Car):10 def run(self):11 print(兰博基尼行驶)12 def stop(self):13 print(兰博基尼制动)141516 class Ferrari(Car):17 def run(self):18 print(法拉利行驶)19 def stop(self):20 print(法拉利制动)212223 class Land_rover(Car):24 def run(self):25 print(路虎行驶)26 def stop(self):27 print(路虎制动)282930 class Factory:31 def get_money(self, money):32 if money 10:33 return Land_rover()34 elif money 100:35 return Ferrari()36 else:37 return Lamborghini()383940 class SuperMarket:41 def __init__(self, f_obj): # 参数: 工厂对象42 self.f_obj f_obj4344 def sale_car(self, money):45 return self.f_obj.get_money(money)464748 f Factory()49 # obj f.get_money(9)50 # obj.run()51 # obj.stop()5253 s SuperMarket(f)54 car s.sale_car(115)55 car.run()56 car.stop()三、策略模式达到某个目标有多种不同的方式这些方式都有可能会使用到具体使用哪种方式根据需求来定1 # 通知客户搞活动, 发邮件, 发短信;23 # 发送信息的父类4 class Msg: # 信息的内容, 联系方式, 发送的方法5 def __init__(self, info, way):6 self.info info7 self.way way # 1336669999 lixiaohuaoffcn.com89 def send(self):10 pass111213 # 发邮件14 class Email(Msg):15 def send(self):16 return 用邮件的方式, 给{}发送活动信息: {}.format(self.way, self.info)171819 # 发短信20 class ShortMsg(Msg):21 def send(self):22 return 用短信的方式, 给{}发送活动信息: {}.format(self.way, self.info)232425 class Customer:26 def __init__(self, name, tel, email):27 self.name name28 self.tel tel29 self.email email30 self.receive_way None # 接收信息的方式3132 def receive_info(self):33 return self.receive_way.send()3435 def set_receive_way(self, obj): # 设置接收信息的方式 obj可能是邮件对象, 也有可能是短信对象36 self.receive_way obj373839 customer Customer(xixi, 13333333333, lixiaohuaoffcn.com)4041 email Email(周年庆,买一送一, customer.email)42 short_msg ShortMsg(周年庆,买一送一, customer.tel)4344 customer.set_receive_way(short_msg) # 设置接收信息的方式就是短信45 print(customer.receive_info())四、观察者模式小喇叭一个人说全校人听通知中心校长用喇叭喊观察者可以有n多个观察者一直在监听通知1 # 通知中心(校长)2 class Monitor:3 observer_list [] # 观察者列表4 info # 通知的内容5 name # 名字67 def set_observer(self, obj): # 绑定观察者, 参数:观察者对象8 Monitor.observer_list.append(obj)910 def show_info(self): # 发布通知11 for observer in Monitor.observer_list: # 遍历获取每一个观察者12 observer.receive_info() # 调用观察者的接收信息的方法131415 # 观察者(学生)16 class Student:1718 def __init__(self, name, monitor):19 self.name name20 self.monitor monitor # 通知中心2122 def receive_info(self):23 print(接收方:{}, {}发布了通知, 通知的内容为:{}.format(self.name, self.monitor.name, self.monitor.info))242526 m Monitor()27 Monitor.info 今天开派对时间是19:3028 Monitor.name xixi2930 s1 Student(haha, m)31 s2 Student(hanhan, m)3233 m.set_observer(s1)34 m.set_observer(s2)3536 m.show_info()