Menu
Coddy logo textTech

Segregazione delle interfacce

Lezione 25 di 28 del corso Codice pulito - Scrivi codice migliore con Python di Coddy.

"Molte interfacce specifiche per i client sono meglio di un'unica interfaccia generica."

Un'interfaccia è una descrizione dei comportamenti che un oggetto può eseguire.

Il principio di segregazione delle interfacce afferma che un'interfaccia dovrebbe essere il più piccola possibile in termini di coesione. In altre parole, dovrebbe fare solo UNA cosa.

Vediamo un cattivo esempio e poi lo correggeremo,

from abc import ABC, abstractmethod


class Animal(ABC):
	@abstractmethod
	def walk(self):
		pass

	@abstractmethod
	def swim(self):
		pass

Questa interfaccia ha più responsabilità!

E avremo un problema quando la implementeremo,

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!")

Come vedi, questa interfaccia non è compatibile con gli animali che non possono camminare e nuotare!

challenge icon

Sfida

Facile

Correggiamo l'esempio precedente implementando le classi Walkable e Swimable>; ti vengono fornite le classi <code>Frog e Giraffe, che implementano le nuove classi

Attività:

  • Crea la classe astratta Walkable, che ha una sola funzione astratta walk(self)
  • Crea la classe astratta Swimable, che ha una sola funzione astratta swim(self)

Non modificare il codice fornito!

Nota che ora ogni interfaccia ha una sola responsabilità e segue il principio 

Provalo tu

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")
			

Tutte le lezioni di Codice pulito - Scrivi codice migliore con Python

Esercitati da solo: Compilatore Python online