Les interfaces de style GO / OBJ-C avec la capacité d'étendre les objets compilés après la libération initiale

softwareengineering.stackexchange https://softwareengineering.stackexchange.com/questions/153208

Question

J'ai un modèle conceptuel pour un système d'objets qui implique de combiner les interfaces / protocoles GO / OBJ-C avec la possibilité d'ajouter des méthodes virtuelles de n'importe quelle unité, pas seulement celle qui définit une classe. L'idée de cela est de permettre des classes ouvertes Ruby-ish afin que vous puissiez adopter une approche minimaliste du développement de la bibliothèque et attacher de petits fonctionnalités, comme cela a réellement besoin par l'ensemble du programme.

La mise en œuvre de cela implique un tableau de méthodes marquées virtuelles dans une table RTTI, auxquelles les fonctions système peuvent ajouter pendant l'initialisation du module. Lors de la dactylographie d'un objet à une interface, une recherche de style GO est effectuée pour créer un VTable pour ce mappage particulier et le faire passer afin que vous puissiez avoir des performances comparables à C / C ++. Dans ce cas, des méthodes peuvent être ajoutées / après / qui n'étaient pas connues auparavant et ces nouvelles méthodes permettent de satisfaire les interfaces plus récentes; Bien que j'aime cette idée car il semble que ce serait très flexible (ignorer le potentiel de code spaghetti, ce qui peut se produire avec à peu près n'importe quel modèle que vous utilisez malgré tout).

En emballage les appels du système pour des méthodes de liaison dans un ensemble d'appels compatibles en C propre, on pourrait également intégrer le code avec les bibliothèques partagées et conserver une quantité décente de performances (Go ne fait pas de liaison partagée, et l'objectif-c fait une recherche dynamique sur chaque appel.)

Existe-t-il un cas d'utilisation valide pour ce modèle qui en valait la peine de plomberie supplémentaire? Autant que cette extensibilité de style Dylan serait bien d'avoir accès, je ne peux pas tout à fait me promener dans un cas d'utilisation qui justifierait les frais généraux que "cela pourrait rendre une sorte de code plus extensible dans les scénarios futurs".

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top