工厂模式

'工厂模式'classmsg(object):defmail(self,msg):passdefsms(self,msg):passdefweixin(self,msg):passdefsender(self,msg,msg_type):ifmsg_type=='sms':self.sms(msg)elifmsg_type=='mail':self.mail(msg)importstatsoutdefoutput(data,format="text"):output_function=getattr(statsout,"output_%s"%format)returnoutput_function(data)




单立模式

#!/usr/bin/python#-*-coding:utf-8-*-__author__='gaogd''''单立模式'''defsingletion(cls):instances={}defwarpper(*args,**kwargs):ifclsnotininstances:instances[cls]=cls(*args,**kwargs)returninstances[cls]returnwarpper@singletionclassMyclass(object):def__init__(self,n):self.n=nc=Myclass('10')c2=Myclass('20')##装饰器的作用:@singletion《=》Myclass=singletion(Myclass)#print'--->',c.n,c2.n#方法2,实现__new__方法#并在将一个类的实例绑定到类变量_instance上,#如果cls._instance为None说明该类还没有实例化过,实例化该类,并返回#如果cls._instance不为None,直接返回cls._instanceclassSingleton(object):def__new__(cls,*args,**kw):ifnothasattr(cls,'_instance'):##如果cls中不包含_instance方法,就执行下面orig=super(Singleton,cls)##继承原始的类cls._instance=orig.__new__(cls,*args,**kw)##在这个类上面添加_instance方法returncls._instance##返回这个新类classMyClass1(Singleton):a=1one=MyClass1()two=MyClass1()two.a=5printone.a,two.a###__new__()方法负责生成__init__()方法的