Zwłaszcza w unittests używamy ten „wzorzec projektowania” Wzywam „dostać klasę od poziomu klasy”Nazwa wzorzec projektowy: uzyskać klasę od poziomu klasy
framworktest.py:
class FrameWorkHttpClient(object):
....
class FrameWorkTestCase(unittest.TestCase):
# Subclass can control the class which gets used in get_response()
HttpClient=FrameWorkHttpClient
def get_response(self, url):
client=self.HttpClient()
return client.get(url)
mytest.py :
class MyHttpClient(FrameWorkHttpClient):
....
class MyTestCase(FrameWorkTestCase):
HttpClient=MyHttpClient
def test_something(self):
response=self.get_response()
...
Sposób get_response()
dostaje klasę z self
nie importując go. W ten sposób podklasa może zmodyfikować klasę i użyć innego HttpClient
.
Jaka jest nazwa tego (uzyskaj klasę od poziomu klasy) "wzorca projektowego"?
Czy jest to metoda "odwrócenia kontroli" lub "wstrzyknięcia zależności"?
dziękuję. Tak, fabryczny wzór metody wygląda bardzo podobnie. – guettli