Menu
Coddy logo textTech

의존 역전 원칙

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의 인스턴스를 사용합니다. 

challenge icon

챌린지

쉬움

거의 완성된 코드가 주어졌습니다. 추상 클래스 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 컴파일러