Python作为最热门的语言,使我们每个人应该学习的一门技术! 本文针对初学者,我会用最容易的方式告诉你如何入门python!
文章目录
- 一、单例模式
- 二、工厂模式
- 三、策略模式
- 四、观察者模式
程序中设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案,这些解决方案是众多软件按开发人员经过相当长的一段时间的实验和错误总结出来的。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码的可靠性。
一、单例模式- 单例模式是种常用的软件设计模式,该模式的目的是确保某一个类只有一个实例存在!
- 适用场景:当一个类只能有一个实例而客户可以从一个众所周知的访问点访问它时
- 优点:对唯一实例的受控访问,相当于全局变量,但是又可以防止此变量被篡改
class A:
a = None
def __new__(cls, *args, **kwargs):
if cls.a is None:
cls.a = object.__new__(cls)
return cls.a
def __init__(self, name):
self.name = name
def __call__(self, *args, **kwargs):
print(self.name)
a = A('张三')
b = A('李四')
a()
b()
结果:
class BC():
def run(self):
print('奔驰再跑')
class AD():
def run(self):
print('奥迪再跑')
class BMW():
def run(self):
print('宝马再跑')
class Factory():
@staticmethod
def whatcar(name):
if name == '奔驰':
return BC() # 返回对应车的一个对象
elif name == '奥迪':
ad = AD()
return ad
else:
return BMW()
a = Factory().whatcar('奔驰')
b = Factory().whatcar('宝马')
c = Factory().whatcar('奥迪')
a.run()
b.run()
c.run()
结果:
#===============用策略模式创建一个手动选择优惠方式付钱的实例
class CashNorm():#原价
def accept_mpney(self,money):
return money
class Cash_rate():#打折
def __init__(self,rate):
self.rate=rate
def accept_money(self,money):
return self.rate*money
class Cash_condition():#满减
def __init__(self,condition,ret):
self.condition=condition
self.ret=ret
def accept_money(self,money):
if money2:
style=0
money=float(input('请输入金额:'))
print(a[style].getResult(money))
结果:
class Boss():
def __init__(self):
self.observers=[]#observers观察者的意思
self.status=''
def attach(self,ob):#attach追加的意思
self.observers.append(ob)#添加一个对象进入列表
def notify(self):
for ob in self.observers:
ob.update()#调用对象的update方法
class Employee():
def __init__(self,name,boss):
self.name=name
self.boss=boss
def update(self):#创造方法来发话
print('{}{}不要再玩游戏了,赶快工作!'.format(self.boss.status,self.name))
if __name__=='__main__':
ljc=Boss()
zs=Employee('张三',ljc)
ljc.attach(zs)
ljc.status='李嘉诚回来了'
ljc.notify()
结果: