Sto usando l'ORM peewee di Python per mappare il mio database relazionale, ma sto notando che i miei modelli stanno cominciando a gonfiarsi e sembra anche che stia violando la separazione dei dubbi.
Ad esempio, la mia classe User
ha metodi auto esplicativi come
authenticate()
push_message()
upload_image()
Anche se è utile chiamare user.authenticate()
o user.upload_image()
, questi metodi implicano l'utilizzo di molti pacchetti e / o API di terze parti e mi chiedo se sarebbe meglio separarli dal modello.
Un modo in cui posso pensare di sistemarlo è spostare tutti questi metodi in un altro livello (e separare ulteriormente quel livello per i vari domini) e usarli in questo modo:
authenticate_user( user )
push_user_message( user )
upload_user_image( user )
Ma ciò sembra in contraddizione con l'utilità di OOP. Un altro modo è forse quello di combinare la mia idea originale e usare un'interfaccia di sorta?
class UserAuthentication( object )
# authentication code goes here
# These would be in separate packages and/or modules
class User( model ):
def authenticate( self ):
return UserAuthentication( self ).authenticate()
Ma questo potrebbe introdurre complessità estemporanea.