关于EP13的一点小小的建议
sun-yahao opened this issue · comments
例子的代码这么写是不是会更舒服?因为感觉上判断修改应该是类内部的逻辑。
class User(Model):
"""普通用户模型类
"""
def __init__(self, username: str):
self.username = username
def allow_deactivate(self) -> bool:
"""是否允许被停用
"""
return True
def _deactivate(self):
"""将当前用户停用
"""
self.is_active = True
self.save()
def deactivate(self) -> bool:
"""将当前用户停用
"""
if self.allow_deactivate():
self._deactivate()
return True
else:
return False
class Admin(User):
"""管理员用户类
"""
def allow_deactivate(self) -> bool:
# 管理员用户不允许被停用
return False
def deactivate_users(users: Iterable[User]):
"""批量停用多个用户
"""
for user in users:
is_deactivated = user.deactivate()
if not is_deactivated:
logger.info(f'user {user.username} does not allow deactivating, skip.')
另外,停用之后is_active变成了True,是不是反了?
感谢建议,你给的例子也是合理的。在实际编程时,我们也确实可以把方法设计成这样。文章里的代码,主要是为了演示里式替换原则。而从演示的角度看,我希望修改后的例子和修改前差别尽量小一点,所以没有做更大的改动,保留把判断放在外部 deactivate_users
函数中。
is_active
是写反了,应该是False
感谢回复。