【发布时间】:2019-08-19 11:07:42
【问题描述】:
我想知道工厂 class 方法是否会破坏 Liskov substitution principle。
例如在下面的 Python 代码中,Response.from_request 工厂类方法会破坏它吗?
import abc
class BaseResponse(abc.ABC):
@abc.abstractmethod
def get_headers(self):
raise NotImplementedError
@abc.abstractmethod
def get_body(self):
raise NotImplementedError
class Response(BaseResponse):
def __init__(self, headers, body):
self.__headers = headers
self.__body = body
def get_headers(self):
return self.__headers
def get_body(self):
return self.__body
@classmethod
def from_request(cls, request, payload):
headers = request.get_headers()
headers["meta_data"] = payload["meta_data"]
body = payload["data"]
return cls(headers, body)
【问题讨论】:
标签: python factory class-method liskov-substitution-principle