Domanda

Ho un modello concettuale per un sistema di oggetti che prevede la combinazione di interfacce/protocolli GO/OBJ-C con la possibilità di aggiungere metodi virtuali da qualsiasi unità, non solo quello che definisce una classe. L'idea di ciò è di consentire le classi aperte di Ruby-ish in modo da poter adottare un approccio minimalista allo sviluppo della biblioteca e allegare piccoli funzionalità, come è effettivamente necessario per l'intero programma.

L'implementazione di ciò comporta una tabella di metodi marcati virtuali in una tabella RTTI, a cui è consentito aggiungere alle funzioni di sistema durante l'inizializzazione del modulo. Dopo aver tipografico un oggetto a un'interfaccia, viene eseguita una ricerca in stile GO per creare un VTABLE per quella particolare mappatura e trasmetterla in modo da poter avere prestazioni comparabili a C/C ++. In questo caso, i metodi possono essere aggiunti / in seguito / che non erano precedentemente noti e questi nuovi metodi consentono di soddisfare le interfacce più recenti; Mentre mi piace questa idea perché sembra che sarebbe molto flessibile (ignorare il potenziale per il codice spaghetti, che può accadere con quasi qualsiasi modello che usi a prescindere).

Avvolgendo le richieste di sistema per i metodi di associazione in una serie di chiamate c-compatibili C pulite, si sarebbe anche in grado di integrare il codice con librerie condivise e mantenere una quantità decente di prestazioni (GO non fa collegamento condiviso e Objective-C lo fa una ricerca dinamica su ogni chiamata.)

Esiste un caso d'uso valido per questo modello che valesse la pena impianto idraulico di sfondo extra? Per quanto questa estensibilità in stile Dylan sarebbe bello avere accesso, non riesco proprio a portarmi in un caso d'uso che giustificherebbe il sovraccarico diverso da "potrebbe rendere più estensibile un tipo di codice in scenari futuri".

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top