Sto cercando l'approccio migliore per progettare il seguente sistema:
- Ho una classe di oggetti, chiamata Compilatori (C, Vai..Ecco)
- Ho un'altra classe di oggetti, chiamata Protocolli (HTTP, RPC, WEBSOCKET..Etc)
- Ho un'altra classe di oggetti, chiamata Serializzazione (BINARY, JSON..Etc)
Ora ogni compilatore deve essere abbinato all'implementazione corretta del protocollo e della serializzazione.
Ad esempio, se il compilatore è C, allora dovrebbe essere abbinato a CProtocolHTTP o CProtocolRPC rispetto al protocollo e CSerializationBinary o CSerializationJson wrt Serialization, se il compilatore è Go dovrebbe essere abbinato a GoProtocolHTTP o GoProtocolRPC rispetto al protocollo e GoSerializationBinary o GoSerializationJson wr Serialization.
Il cliente dovrebbe avere la possibilità di scegliere qualsiasi combinazione:
- Vai con HTTP e BINARY
- Vai con HTTP e JSON
- Vai con RPC e BINARY
- C con HTTP e JSON ... etc
Ho provato Factory e Strategy ma non sono riuscito a farli funzionare in modo pulito.
Quali sarebbero i modelli di progettazione giusti da utilizzare per implementarlo in Java?