Menu
Coddy logo textTech

היפוך תלות

שיעור 26 מתוך 28 בקורס קוד נקי – כתיבת קוד טוב יותר באמצעות Python של Coddy.

"הסתמך על הפשטות, [לא על] מימושים קונקרטיים."

בואו נראה דוגמה שמפרה את העיקרון,

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)

כל השיעורים ביחידה קוד נקי – כתיבת קוד טוב יותר באמצעות Python

תרגלו בעצמכם: קומפיילר Python אונליין