I want to ask:
Whether the Role class violates Single Responsibility Principle in SOLID ? I think deleteAccount() is not belong to Role class but Role class is way to extend code in the future
There are deleteAccount() in Role and Account. That is ok ?
Admin and Moderate violates DRY principle ? Because the deleteAccount() was repeated. If yes, how to fix it ?
How to implement the deleteAccount() which can delete itself account ? Should I use strategy design pattern to do that ?
class Account: def __init__(self, email, password, security_ans): self.status = "Active" self.role = Member() def deleteAccount(self, dest_email): dest_account = accounts.getByEmail(dest_email) #get account obj from accounts self.role.deleteAccount(self)
This is my Role class:
class Role:
def blockAccount(self, account):
raise NotImplementedError("No Permission")
class Admin(Role):
def deleteAccount(self, account_obj):
account_obj.setStatus('Closed')
class Moderator(Role):
def deleteAccount(self, account_obj):
account_obj.setStatus('Closed')
class Member(Role):
def deleteAccount(self, account_obj):
raise NotImplementedError("No Permission")