四 單例模式

2021-08-07 14:43:10 字數 1669 閱讀 4203

一些常用的方法放到了myutil類中,為了不造成建立多個myutil例項的情況,因此使用了單例模式

main.py

myutil(filename=psettings.root_dir + os.sep + 'config' + os.sep + 'config.properties')
myutil.py

class

myutil

(object):

''' 單例,提供從配置檔案獲取資訊,獲取連線等基礎方法

'''filename = ''

cp = none

__instance = none

cnxpool = none

def__new__

(cls, *args, **kwd):

if myutil.__instance is

none:

myutil.__instance = object.__new__(cls, *args, **kwd)

return myutil.__instance

def__init__

(self, filename=none):

if filename is

none:

raise exception('%s配置檔案沒有找到' % filename)

myutil.filename = filename

myutil.cp = configparser()

print

'配置檔案%s' % myutil.filename

myutil.cp.read(filename)

self.logger = logging.getlogger('mylogger.myutil.myutil')

@classmethod

defloadproperty

(cls, section, key):

''' 從配置檔案中獲得key對應的值

@param section: 節點名稱

@param key: 引數名

@return: 得到的結果string型別,如果沒有取得值返回none

'''if myutil.cp is

none:

myutil.cp = configparser()

if myutil.filename is

none:

raise exception('%s配置檔案沒有找到' % myutil.filename)

myutil.cp.readfp(codecs.open(myutil.filename, "r", "utf-8-sig"))

s = myutil.cp.sections()

try:

if s is

notnone

and section in s:

value = myutil.cp.get(section, key)

else:

value = none

except exception, e:

# print e

value = none

# print value

return value

設計模式 四 單例模式

singleton pattern 單例模式 singleton pattern 確保某乙個類只有乙個例項,向整個系統提供這個唯一例項,這個類稱為單例類,它提供全域性訪問的方法。單例模式是一種物件建立型模式。單例模式是結構最簡單的設計模式一,在它的核心結構中只包含乙個被稱為單例類的特殊類。單例模式的...

設計模式(四) 單例模式

單例模式屬於物件建立性質的模式,用於產生乙個物件的具體例項,並且可以確保系統中乙個類只能產生乙個例項。public class singleton public static singleton getinstance public class lazysingleton private stati...

單例模式 單例模式

餓漢式 急切例項化 public class eagersingleton 2.宣告靜態成員變數並賦初始值 類初始化的時候靜態變數就被載入,因此叫做餓漢式 public static eagersingleton eagersingleton new eagersingleton 3.對外暴露公共的...