Arayüz ayrımı
Coddy'nin Clean Code - Python ile daha iyi kod yazın kursunda ders 25 / 28.
"Birçok istemciye özel arayüz, tek bir genel amaçlı arayüzden daha iyidir."
Bir arayüz, bir nesnenin gerçekleştirebileceği davranışların açıklamasıdır.
Arayüz ayrımı ilkesi, bir arayüzün bütünlük açısından mümkün olduğunca küçük olması gerektiğini belirtir. Başka bir deyişle, yalnızca TEK bir şey yapmalıdır.
Kötü bir örneğe bakalım ve bunu düzelteceğiz:
from abc import ABC, abstractmethod
class Animal(ABC):
@abstractmethod
def walk(self):
pass
@abstractmethod
def swim(self):
passBu, birden fazla sorumluluğa sahip bir arayüzdür!
Bunu uygularken sorun yaşayacağız:
class Frog(Animal):
def walk(self):
print("Walking")
def swim(self):
print("Swimming")
class Giraffe(Animal):
def walk(self):
print("Walking")
def swim(self):
raise Exception("Girrafe cannot swim!")Gördüğünüz gibi bu arayüz, walk ve swim yapamayan hayvanlarla uyumlu değildir!
Görev
KolayYukarıdaki örneği, Walkable ve Swimable sınıflarını uygulayarak düzeltelim; size yeni sınıfları uygulayan Frog ve Giraffe sınıfları verilmiştir
Görevler:
- Yalnızca bir soyut
walk(self)işlevine sahip soyutWalkablesınıfını oluşturun - Yalnızca bir soyut
swim(self)işlevine sahip soyutSwimablesınıfını oluşturun
Verilen kodu değiştirmeyin!
Her arayüzün artık yalnızca bir sorumluluğu olduğuna ve ilkesini izlediğine dikkat edin
Kendin dene
from abc import ABC, abstractmethod
# Enter you code here
class Frog(Walkable, Swimable):
def walk(self):
print("Walking")
def swim(self):
print("Swimming")
class Giraffe(Walkable):
def walk(self):
print("Walking")
if __name__ == "__main__":
animal_type = input()
if animal_type == "frog":
animal = Frog()
animal.walk()
animal.swim()
elif animal_type == "giraffe":
animal = Giraffe()
animal.walk()
print("not Swimming")
Clean Code - Python ile daha iyi kod yazın bölümündeki tüm dersler
Kendi başına pratik yap: Online Python derleyicisi