-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathsingleton_4.py
More file actions
39 lines (28 loc) · 801 Bytes
/
singleton_4.py
File metadata and controls
39 lines (28 loc) · 801 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
"""
Pattern name - SingleTon
Pattern type - Creational Design Pattern
"""
# Solution - 4
class SingletonMeta(type):
__instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls.__instances:
cls.__instances[cls] = super().__call__(*args, **kwargs)
print(cls.__instances)
return cls.__instances[cls]
class DBConnector(metaclass=SingletonMeta):
def __init__(self):
self.status = "Not Connected"
def disconnect(self):
self.status = "Disconnected"
def connect(self):
self.status = "Connected"
client1 = DBConnector()
print("Client 1 ", client1)
print(client1.status)
client2 = DBConnector()
print("Client 2 ", client2)
client2.connect()
print(client1.status)
client1.disconnect()
print(client2.status)