首页 > 代码库 > Python的设计模式学习
Python的设计模式学习
1.工厂模式
#encoding=utf-8__author__ = ‘kevinlu1010@qq.com‘class ADD(): def getResult(self,*args): return args[0]+args[1]class SUB(): def getResult(self,*args): return args[0]-args[1]class MUL(): def getResult(self,*args): return args[0]*args[1]class DIV(): def getResult(self,*args): try: return args[0]/args[1] except:return 0class UNKnow(): def getResult(self,op1,op2): return ‘unknow‘class Factory(): Classes={‘+‘:ADD,‘-‘:SUB,‘*‘:MUL,‘/‘:DIV} def getClass(self,key): return self.Classes[key]() if key in self.Classes else UNKnow()if __name__==‘__main__‘: key=‘+‘ op1=91 op2=45 factory=Factory() c=factory.getClass(key) r=c.getResult(op1,op2) print r
工厂模式会创建一个工厂类,该类会根据实例化时的输入参数返回相应的类。Factory这个类会根据输入的key,返回相应的加,减,乘或除类。
2.策略模式
#encoding=utf-8__author__ = ‘kevinlu1010@qq.com‘class Base(): def getPrice(self,price): passclass Origin(Base): def getPrice(self,price): return priceclass Vip(Base): def getPrice(self,price): return price*0.8class Sale(Base): def getPrice(self,price): return price-price/100*20class Context(): def __init__(self,c): self.c=c def getPrice(self,price): return self.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) print price_last
策略模式中,系统会根据不同的策略,返回不同的值,例如超市里面,会有不同的计价方法,例如普通客户会以原价来计价,vip会打八折,活动促销时满100减20,这里就有三种策略,在系统中,输入原价和采取的策略方式,系统就会根据选择的策略,计算消费者最终需要支付的金额。策略模式与工厂模式类似,例如上面的例子也可以用工厂模式来实现,就是新建三个类,每个类都有一个计价的方法。而策略模式和工厂模式的区别是策略模式更适用于策略不同的情景,也就是类中的方法不同,而工厂模式更适合类不同的情景。
参考:http://www.cnblogs.com/wuyuegb2312/archive/2013/04/09/3008320.html
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。