Bağımlılığın ters çevrilmesi
Coddy'nin Clean Code - Python ile daha iyi kod yazın kursunda ders 26 / 28.
"Soyutlamalara, [somutlaştırmalara değil] dayan."
İlkeyi ihlal eden bir örnek gösterelim,
class LocalStorage:
def save(self, key, value):
print("Saved, " + key + ":" + value)LocalStorage class, key ve value çiftini kaydeder.
Şimdi LocalStorage kullanan başka bir ana class'ımız var,
class App:
def start(self, key, value):
storage = LocalStorage()
storage.save(key, value)LocalStorage somut bir uygulamadır ve App buna bağlıdır!
Daha iyi yol, bir arayüz (soyut class) oluşturmaktır,
from abc import ABC, abstractmethod
class Storage(ABC):
@abstractmethod
def save(self):
passArdından somut uygulama yerine arayüzün bir örneğini kullanın.
Görev
KolaySize neredeyse tamamlanmış bir kod veriliyor; Storage soyut sınıfını ekleyin.
Uygulamadan sonra, örneğin CloudStorage gibi başka bir somut sınıfa geçmenin kolay olduğunu unutmayın...
Kendin dene
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 ile daha iyi kod yazın bölümündeki tüm dersler
Kendi başına pratik yap: Online Python derleyicisi