의존 역전 원칙
Coddy의 Clean Code - Python으로 더 나은 코드 작성하기 코스 레슨. 28개 중 26번째.
"추상화에 의존하고, 구체화에는 의존하지 마라."
이 원칙을 위반하는 예를 살펴보겠습니다.
class LocalStorage:
def save(self, key, value):
print("Saved, " + key + ":" + value)LocalStorage class는 key와 value 쌍을 저장합니다.
이제 LocalStorage를 사용하는 또 다른 주요 class가 있습니다.
class App:
def start(self, key, value):
storage = LocalStorage()
storage.save(key, value)LocalStorage는 구체적인 구현이며 App은 여기에 의존합니다!
더 나은 방법은 interface (abstract class)를 만드는 것입니다.
from abc import ABC, abstractmethod
class Storage(ABC):
@abstractmethod
def save(self):
pass그런 다음 구체적인 구현 대신 interface의 인스턴스를 사용합니다.
챌린지
쉬움거의 완성된 코드가 주어졌습니다. 추상 클래스 Storage를 추가하세요.
구현 후에는 예를 들어 CloudStorage와 같은 다른 구체 클래스으로 쉽게 변경할 수 있다는 점에 유의하세요...
직접 해보기
from abc import ABC, abstractmethod
# your code here
class LocalStorage(Storage):
def save(self, key, value):
print("Saved, " + key + ":" + value)
class App:
def __init__(self, storage):
self.storage = storage
def start(self, key, value):
storage.save(key, value)
if __name__ == "__main__":
storage = LocalStorage()
app = App(storage)
key = input()
value = input()
app.start(key, value)
Clean Code - Python으로 더 나은 코드 작성하기의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러