Qual è il nome del modello di implementazione dell'interfaccia applicato alla modularizzazione?

1

Al lavoro abbiamo un progetto in cui stiamo spingendo pezzi del monolite in modules . (Un progetto java che rende più piccoli maven moduli che inseriamo tramite dipendenze Maven). Lo schema che stiamo utilizzando spinge ogni modulo in una "coppia" - con un modulo per l'interfaccia e un modulo per l'implementazione.

Il pensiero si verifica che questo modello possa avere un nome che cattura meglio il suo ragionamento. Mentre le lingue OO usano questo modello per il polimorfismo , sembra che potrebbe servire a uno scopo leggermente diverso in questo uso.

Accennano a questo modello qui:

You can also see in the following images that the sub-module package structure has been arranged on layer and type boundaries in that each module has its own model, repository (which contains interface definitions only) services and controller packages and that the layout of each module is identical at the top level.

La mia domanda è: Qual è il nome del modello di implementazione dell'interfaccia applicato alla modularizzazione?

    
posta hawkeye 15.04.2017 - 03:37
fonte

2 risposte

1

Martin Fowler ha precedentemente descritto qualcosa di simile usando il termine Interfaccia pubblicata :

Published Interface is a term I used (first in Refactoring) to refer to a class interface that's used outside the code base that it's defined in. As such it means more than public in Java and indeed even more than a non-internal public in C#. In my column for IEEE Software I argued that the distinction between published and public is actually more important than that between public and private.

The reason is that with a non-published interface you can change it and update the calling code since it is all within a single code base. Such things as renames can be done, and done easily with modern refactoring tools. But anything published so you can't reach the calling code needs more complicated treatment.

L'articolo completo di Fowler in formato .pdf: Interfacce pubbliche vs pubblicate .

    
risposta data 15.04.2017 - 12:01
fonte
0

Se il tuo intento è quello di disaccoppiare un'astrazione dalla sua implementazione, puoi utilizzare un schema del ponte :

  • la tua astrazione è l'interfaccia del modulo. Il consumatore del tuo modulo conosce solo questo.
  • la tua implementazione effettiva potrebbe avere un'interfaccia leggermente diversa (ad esempio interfaccia più ricca, o solo blocchi predefiniti e utilità, ecc.)
  • la tua astrazione può essere derivata ulteriormente, completamente indipendentemente dalla sua implementazione.
  • potrebbe essere utilizzata una diversa implementazione concreta per implementare il modulo, senza avere alcun effetto sull'astrazione e sui suoi dervati

Non sono sicuro che questo sia ciò che stai cercando, o se questo è eccessivo e stavi cercando semplicemente un facade per offrire una API pubblica a una implementazione privata

ben incapsulata     
risposta data 15.04.2017 - 14:26
fonte

Leggi altre domande sui tag