溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

程序設(shè)計模式 工廠模式 單立模式

發(fā)布時間:2020-07-09 12:58:00 來源:網(wǎng)絡(luò) 閱讀:549 作者:lvnian2009 欄目:開發(fā)技術(shù)



工廠模式

'工廠模式'
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,實現(xiàn)__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方法,就執(zhí)行下面
            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__()方法負(fù)責(zé)生成__init__()方法的


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI