Considera il seguente caso, immagine Sto facendo un semplice programma di chat; Voglio che sia estensibile in modo che sia facile aggiungere nuovi script e interfacce utente.
Voglio il controller di base e il modello di essere separato dal interfaccia in modo ho potuto qualcosa di simile a quanto segue, sto usando la sintassi di Python per amor di semplicità.
class chat_controller:
def send_message():
def add_new_interface(iface)
class console_ui:
def __init__(chat_interface): #new need access to the chat ctrl
def receive_new_message(msg):
class python_scripting:
def __init__(chat_interface): #new need access to the chat ctrl
def receive_new_message(msg):
c=chat_controller(...)
c.add_new_interface(console_ui)
c.add_new_interface(python_scripting)
Questo funziona, FINO voglio anche l'interfaccia di Python per essere in grado di interagire con l'interfaccia utente (ad esempio modificare i colori, a prescindere) o fino a quando voglio essere in grado di eseguire le macro di script dall'interfaccia utente.
Sull'idea avrei avuto qualcosa di simile:
class chat_controller:
def send_message():
#register new interface with name
def add_new_interface(name, iface)
def try_get_interface(name) #none or iface
ma poi dovrò fare un cast basandosi sul valore della stringa per essere corretto, il che è un po 'grossolano.
Un altro modo, sarebbe quello di rendere ciascuno degli oggetti di condivisione di avere una funzione 'add_new_inteface', ma ora sembra solo ingombrante.
Bare in mente, è forse il caso che il programma di chat può essere eseguito con fuori script Python, o con un diverso motore di script, o dire un web o GUI piuttosto che console, si suppone di essere generico.
Qualsiasi input è benvenuto.