單例模式的四種實現方式

2021-08-26 05:35:00 字數 1775 閱讀 1981

單例模式:多次例項化的結果指向同一例項

一,單例模式實現方式一

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

class mysql:

print('run.....')

def __init__(self,ip,port):

self.ip = ip

self.port = port

instance = mysql(settings.ip,settings.port)

然後在py檔案中寫下:

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.列舉 實現 將要實現的單例的...