[导读]:工厂模式 工厂模式会创建一个工厂类,该类会根据实例化时的输入参数返回相应的类。Factory这个类会根据输入的key,返回相应的加,减,乘或除类。 #encoding=utf-8 __author__=kevinlu1010qq.com classADD...
工厂模式
工厂模式会创建一个工厂类,该类会根据实例化时的输入参数返回相应的类。Factory这个类会根据输入的key,返回相应的加,减,乘或除类。
#encoding=utf-8
__author__='kevinlu1010qq.com'
classADD():
defgetResult(self,*args):
returnargs[0]+args[1]
classSUB():
defgetResult(self,*args):
returnargs[0]-args[1]
classMUL():
defgetResult(self,*args):
returnargs[0]*args[1]
classDIV():
defgetResult(self,*args):
try:
returnargs[0]/args[1]
except:return0
classUNKnow():
defgetResult(self,op1,op2):
return'unknow'
classFactory():
Classes={'+':ADD,'-':SUB,'*':MUL,'/':DIV}
defgetClass(self,key):
returnself.Classes[key]()ifkeyinself.ClasseselseUNKnow()
if__name__=='__main__':
key='+'
op1=91
op2=45
factory=Factory()
c=factory.getClass(key)
r=c.getResult(op1,op2)
printr
策略模式
策略模式中,系统会根据不同的策略,返回不同的值,策略模式和工厂模式的区别是策略模式更适用于策略不同的情景,也就是类中的方法不同,而工厂模式更适合类不同的情景。
策略模式中,系统会根据不同的策略,返回不同的值,策略模式和工厂模式的区别是策略模式更适用于策略不同的情景,也就是类中的方法不同,而工厂模式更适合类不同的情景。
#encoding=utf-8
__author__='kevinlu1010@qq.com'
classBase():
defgetPrice(self,price):
pass
classOrigin(Base):
defgetPrice(self,price):
returnprice
classVip(Base):
defgetPrice(self,price):
returnprice*0.8
classSale(Base):
defgetPrice(self,price):
returnprice-price/100*20
classContext():
def__init__(self,c):
self.c=c
defgetPrice(self,price):
returnself.c.getPrice(price)
if__name__=='__main__':
strategy={}
strategy[0]=Context(Origin())
strategy[1]=Context(Vip())
strategy[2]=Context(Sale())
price=485
s=2
price_last=strategy[s].getPrice(price)
printprice_last
单例模式
classSingleton(object):
def__new__(type,*args,**kwargs):
ifnot'_the_instance'intype.__dict__:
type._the_instance=object.__new__(type,*args,**kwargs)
returntype._the_instance
classMySin(Singleton):
b=0
def__init__(self):
printself.b
ifnotself.b:self.b+=1
printself.b
self.a=[1]
defchange(self):
self.a.append(2)
c1=MySin()
c1.a.append(3)
c2=MySin()
printc1.a
c1.change()
printc2.a
本文来自投稿,不代表阿习进阶博客立场,如若转载,请注明出处:https://www.yanxias.com/Python/36.html

说点什么吧
- 全部评论(0)
还没有评论,快来抢沙发吧!