היפוך תלות
שיעור 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ואז להשתמש במופע של הממשק במקום במימוש הקונקרטי.
אתגר
קלניתן לך קוד שכמעט הושלם. הוסף את המחלקה המופשטת 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 אונליין