Menu
Coddy logo textTech

의존 역전 원칙

Coddy의 Clean Code - Python으로 더 나은 코드 작성하기 코스 레슨 — 28개 중 26번째.

"구체화가 아니라 추상화에 의존하라."

이 원칙을 위반하는 예를 살펴보겠습니다.

class LocalStorage:
	def save(self, key, value):
		print("Saved, " + key + ":" + value)

LocalStorage 클래스는 키와 값의 쌍을 저장합니다.

이제 LocalStorage를 사용하는 또 다른 메인 클래스가 있습니다.

class App:
	def start(self, key, value):
		storage = LocalStorage()
		storage.save(key, value)

LocalStorage구체적인 구현이며 App은 이에 의존합니다!

더 나은 방법은 인터페이스(추상 클래스)를 만드는 것입니다.

from abc import ABC, abstractmethod


class Storage(ABC):
	@abstractmethod
	def save(self):
		pass

그런 다음 구체적인 구현 대신 인터페이스의 인스턴스를 사용합니다. 

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으로 더 나은 코드 작성하기의 모든 레슨