网站建设资讯

NEWS

网站建设资讯

程序设计模式工厂模式单立模式-创新互联

工厂模式

创新互联是少有的成都网站设计、成都做网站、营销型企业网站、微信小程序、手机APP,开发、制作、设计、卖链接、推广优化一站式服务网络公司,2013年开创至今,坚持透明化,价格低,无套路经营理念。让网页惊喜每一位访客多年来深受用户好评
'工厂模式'
class msg(object):

    def mail(self,msg):
        pass

    def sms(self,msg):
        pass

    def weixin(self,msg):
        pass


    def sender(self,msg,msg_type):
        if msg_type == 'sms':
            self.sms(msg)
        elif msg_type == 'mail':
            self.mail(msg)
            
            
            

import statsout 
def output(data, format="text"):                           
    output_function = getattr(statsout, "output_%s" %format) 
    return output_function(data)

单立模式

    
  #!/usr/bin/python
# -*- coding: utf-8 -*-

__author__ = 'gaogd'

'''
单立模式
'''
def singletion(cls):
    instances = {}

    def warpper(*args,**kwargs):
        if cls not in instances:
            instances[cls] = cls(*args,**kwargs)
        return  instances[cls]
    return  warpper

@singletion
class Myclass(object):

    def __init__(self,n):
        self.n = n


c = Myclass('10')
c2 = Myclass('20')

## 装饰器的作用:   @singletion 《=》 Myclass = singletion(Myclass)

# print '--->',c.n ,c2.n




#方法2,实现__new__方法
#并在将一个类的实例绑定到类变量_instance上,
#如果cls._instance为None说明该类还没有实例化过,实例化该类,并返回
#如果cls._instance不为None,直接返回cls._instance
class Singleton(object):
    def __new__(cls, *args, **kw):
        if not hasattr(cls, '_instance'):   ##如果cls中不包含_instance方法,就执行下面
            orig = super(Singleton, cls)     ##继承原始的类
            cls._instance = orig.__new__(cls, *args, **kw) ##在这个类上面添加_instance方法
        return cls._instance  ##返回这个新类

class MyClass1(Singleton):
    a = 1

one = MyClass1()
two = MyClass1()
two.a = 5
print one.a,two.a

### __new__()方法负责生成__init__()方法的

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享名称:程序设计模式工厂模式单立模式-创新互联
浏览路径:http://cdweb.net/article/idjii.html