單例模式:多次例項化的結果指向同一例項
一,單例模式實現方式一
import settings二,單例模式實現方式二class mysql:
__instance = none
def __init__(self,ip,sport):
self.ip = ip
self.port = port
@classmethod
def from_conf(cls):
if cls.__instance is none:
cls.__instance = cls(settings.ip,settings.port)
return cls.__intance
import settings三,單例模式實現方式三def singleton(cls):
_instance=cls(settings.ip,settings.port)
return obj
return _intance
@singleton
clas mysql:
def __init__(self,ip,port):
self.ip = ip
self.port = port
import settings四,單例模式實現方式四class mymeta(type):
def __init__(self,class_name,class_bases,class_dic):
self.__instance = self(settings.ip,settings.port)
def __call__(self,*args,**kwargs):
if args and kwargs:
obj = self..__new__(self)
self.__init__(obj,*args,**kwargs)
return obj
else:
return self.__instance
class mysql(metaclass = mymeta):
def __init__(self,ip,port):
self.ip = ip
self.port = port
這種方式主要匯入模組,首先在模組中寫下:
import settings然後在py檔案中寫下:class mysql:
print('run.....')
def __init__(self,ip,port):
self.ip = ip
self.port = port
instance = mysql(settings.ip,settings.port)
def fi():from singleton import instance
print(instance)
def f2():
from singleton import instance,mysql
print(instance)
obj= mysql("1.1.1.1",3302)
print(obj)
f1()
f2()
四種方式實現單例模式
乙個類中只有乙個例項,除此外沒有其他的例項模式,有三種特性 構造器不可被外部建立 限制了外部的訪問方式 內部保證例項唯一 現在來介紹四種方式 public class singletonpattern01 public static singletonpattern01 getsingletonpa...
單例設計模式的四種實現方式
單例設計模式的三個要求 只能有乙個例項 必須自行建立自己的唯一例項 要對外提供該例項 方法一 餓漢式直接建立例項物件,不管你是否需要這個物件都會去建立 方法一 單例模式的實現 餓漢式,執行緒安全 但效率比較低 public class singleton1 提供對外使用的唯一例項 public st...
單例的四種實現方式
單例的實現方式 1.餓漢式 顧名思義,已載入類就會建立單例。2.懶漢式 顧名思義,只有使用單例的時候,才給載入 3.靜態內部類 推薦 通過再單例實現類中,增加靜態內部類,在靜態內部類中實現單例,與餓漢式不同的時,因為是內部靜態類的靜態屬性,只有使用的時候才會建立單例。4.列舉 實現 將要實現的單例的...