設計模式 單例模式

2022-09-08 08:03:10 字數 4201 閱讀 5076

例項:web應用程式

#!/usr/bin/env python

#coding:utf-8

from wsgiref.******_server import make_server

class dbhelper(object):

def __init__(self):

self.hostname = '1.1.1.1'

self.port = 3306

self.password = 'pwd'

self.username = 'root'

def fetch(self):

# 連線資料庫

# 拼接sql語句

# 操作

return 'fetch'

def create(self):

# 連線資料庫

# 拼接sql語句

# 操作

return 'create'

def remove(self):

# 連線資料庫

# 拼接sql語句

# 操作

return 'remove'

def modify(self):

# 連線資料庫

# 拼接sql語句

# 操作

return 'modify'

class handler(object):

def index(self):

# 建立物件

對於上述例項,每個請求到來,都需要在記憶體裡建立乙個例項,再通過該例項執行指定的方法。

那麼問題來了...如果併發量大的話,記憶體裡就會存在非常多功能上一模一樣的物件。存在這些物件肯定會消耗記憶體,對於這些功能相同的物件可以在記憶體中僅建立乙個,需要時都去呼叫,也是極好的!!!

鐺鐺 鐺鐺 鐺鐺鐺鐺鐺,單例模式出馬,單例模式用來保證記憶體中僅存在乙個例項!!!

通過物件導向的特性,構造出單例模式:12

3456

78910

1112

1314

15# ########### 單例類定義 ###########

classfoo(object):

__instance=none

@staticmethod

defsingleton():

iffoo.__instance:

returnfoo.__instance

else:

foo.__instance=foo()

returnfoo.__instance

# ########### 獲取例項 ###########

obj=foo.singleton()

對於python單例模式,建立物件時不能再直接使用:obj = foo(),而應該呼叫特殊的方法:obj = foo.singleton() 。

#!/usr/bin/env python

#coding:utf-8

from wsgiref.******_server import make_server

# ########### 單例類定義 ###########

class dbhelper(object):

__instance = none

def __init__(self):

self.hostname = '1.1.1.1'

self.port = 3306

self.password = 'pwd'

self.username = 'root'

@staticmethod

def singleton():

if dbhelper.__instance:

return dbhelper.__instance

else:

dbhelper.__instance = dbhelper()

return dbhelper.__instance

def fetch(self):

# 連線資料庫

# 拼接sql語句

# 操作

pass

def create(self):

# 連線資料庫

# 拼接sql語句

# 操作

pass

def remove(self):

# 連線資料庫

# 拼接sql語句

# 操作

pass

def modify(self):

# 連線資料庫

# 拼接sql語句

# 操作

總結:單利模式存在的目的是保證當前記憶體中僅存在單個例項,避免記憶體浪費!!!

設計模式 單例模式

單例模式 singleton pattern 是乙個比較簡單的模式,其定義如下 ensure a class has only one instance,and provide a golbal point of acess to it.確保某乙個類只有乙個例項,而且自行例項化並且向整個系統提供這個...

設計模式 單例模式

class testsingleton static public function instance return self testsingleton private function clone public function setsinvar sinvar public function ...

設計模式 單例模式

單例模式的目的是保證類在系統中只被例項化一次,由該唯一的例項來為系統提供服務.單例模式主要用於保證服務的統一,比如獲取統一的編號服務,模仿oracle的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...