Skip to content

Instantly share code, notes, and snippets.

@anuradhawick
Created September 26, 2021 02:16
Show Gist options
  • Save anuradhawick/a445a3d2a84280956e53b91e747caf32 to your computer and use it in GitHub Desktop.
Save anuradhawick/a445a3d2a84280956e53b91e747caf32 to your computer and use it in GitHub Desktop.
Abstract Factory Design pattern
class User:
def __init__(self, *args, **kwards):
self.store = args
self.key_store = kwards
def __str__(self):
output = 'Values\n-------\n'
for v in self.store:
output += str(v) + '\n'
output += 'Keys\n-------\n'
for k, v in self.key_store.items():
output += f'{k:10}\t{str(v):5s}\n'
return output
class Admin(User):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def admin_func(self, task):
# TODO admin logic
pass
class Guest(User):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def guest_func(self, task):
# TODO guest logic
pass
class GuestUserFactory:
def __init__(self):
pass
def get_user(self, *args, **kwargs):
user = Guest(*args, **kwargs)
return user
def get_privileged_guest(self, *args, **kwargs):
user = Guest(*args, **kwargs)
# do something special
return user
class AdminUserFactory:
def __init__(self):
pass
def get_user(self, *args, **kwargs):
user = Admin(*args, **kwargs)
return user
def get_sudo_admin(self, *args, **kwargs):
user = Guest(*args, **kwargs)
# do something special
return user
guest_factory = GuestUserFactory()
guest = guest_factory.get_privileged_guest('John', access='executable')
print(guest)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment