python設計模式 單例模式

2021-09-28 12:41:06 字數 1799 閱讀 6082

(一)、什麼是單例模式

單例模式(singleton pattern)是一種常用的軟體設計模式,該模式的主要目的是確保某乙個類只有乙個例項存在。當你希望在整個系統中,某個類只能出現乙個例項時,單例物件就能派上用場。

(二)、實現單例的方法

(三)、模組

python 模組在第一次匯入時,會生成 .pyc 檔案,當第二次匯入時,就會直接載入 .pyc 檔案,而不會再次執行模組**。因此,我們只需把相關的函式和資料定義在乙個模組中,就可以獲得乙個單例物件了。

(四)、new方法

# -*- coding: utf-8 -*-

__author__ =

'loco_python'

class

person

(object):

_instance =

none

_is_init =

false

# 實現單例模式

def__new__

(cls,

*args,

**kwargs):if

not cls._instance:

# 如果沒有建立物件,我們就建立物件

cls._instance =

super

(person, cls)

.__new__(cls,

*args,

**kwargs)

# 無論如何我們只返回乙個物件

return cls._instance

# 只做一次初始化。

def__init__

(self, name, age):if

not self._is_init:

self.name = name

self.age = age

self._is_init =

true

def__str__

(self)

:return self.name

p1 = person(

'xiaohua',18

)p2 = person(

'xiaowang',19

)# p1和p2同一位址

print

id(p1),id

(p2)

# 4308349264 4308349264

# 只初始化了第一次

print p1, p2 # xiaohua xiaohua

(五)、裝飾器
__author__ =

'loco_python'

from functools import wraps

defsingleton

(cls)

: _instance =

@wraps(cls)

def(

*args,

**kwargs)

:if cls not

in _instance:

_instance[cls]

= cls(

*args,

**kwargs)

return _instance[cls]

@singleton

class

person

:def

__init__

(self)

:pass

p = person(

)p1 = person(

)print

id(p),id

(p1)

# 4501461760 4501461760

python設計模式 單例模式

一 什麼是單例模式單例模式 singleton pattern 是一種常用的軟體設計模式,該模式的主要目的是確保某乙個類只有乙個例項存在。當你希望在整個系統中,某個類只能出現乙個例項時,單例物件就能派上用場。二 實現單例的方法 三 模組python 模組在第一次匯入時,會生成 pyc 檔案,當第二次...

Python設計模式 單例模式

單例模式 確保乙個類只有乙個例項,並且提供乙個訪問它的全域性方法 class singleton object instance none isfirstinit false def new cls,name if not cls.instance singleton.instance super ...

python設計模式 單例模式

的設計模式共有25種,設計模式其實是 無關的。其目的是基於oop的思想,不同應用場景應用不同的設計模式,從而達到簡化 利於擴充套件 提示性能等目的。本文簡述python實現的單例模式場景。簡而言之,單例模式的應用場景是所有例項物件封裝的資料都相同的場景。在這樣的場景下應用單例模式可以減少重複建立物件...