Quale modello di progettazione per una singola classe che accede a un oggetto che rappresenta una struttura dati?

2

Quale modello di progettazione dovrei usare quando ho una classe che rappresenta una struttura dati (ovvero una struct in stile C) e desidero avere solo una singola classe per potervi accedere.

Stavo pensando di dichiarare semplicemente la classe che rappresenta una struttura di dati come una classe interiore, ma volevo sapere se c'è un modo migliore per progettarlo.

es .:

class XXManager{
getXX();
setXXAtrtribute();
}

class XX{
  String name;
  String email;
  String job;
}

Qui voglio progettare una classe XXManager che gestirà la creazione e la gestione degli oggetti 'XX' e nessuno dovrebbe essere in grado di accedere a XX se non attraverso il XXManager.

    
posta user2616676 20.09.2014 - 17:12
fonte

4 risposte

1

Per me sembra che potresti voler dare un'occhiata al modello di progettazione Proxy . Detto ciò, non tutto ciò che crei si basa su modelli di design. Potrebbe portare a un po 'di overengineering.

    
risposta data 20.09.2014 - 18:21
fonte
0

Creare XX una classe interna, o una classe base di XXManager funzionerà entrambi. Se vuoi usarlo come classe base, puoi contrassegnarlo come astratto per impedire l'istanziazione diretta.

Potresti anche combinare le due classi: se davvero devi insistere sul fatto che funzionano con XXManager e non funzionano con XX , rimuovere XX potrebbe essere la soluzione più semplice.

In tutti i casi sembra un po 'strano e solleva la questione del "perché"? Forse sarebbe meglio lasciare le classi indipendenti e accessibili e affidarsi all'addestramento o alla comprensione per far rispettare lo standard.

    
risposta data 20.10.2014 - 20:00
fonte
0

Non è possibile trovare rapidamente alcun collegamento, ma mi è stato insegnato che nominare qualcosa come XXManager è un "odore di codice" e dovresti prendere seriamente in considerazione la possibilità di nominarlo XX.

Perché vuoi una classe Anemic XX con un XXManager separato?

A volte ha senso avere un manager separato, ad es. se segui religiosamente MVC o un database è coinvolto, ma è questo il caso qui?

Supponendo che tu voglia farlo, una classe interiore è una soluzione. In alternativa, in Java è possibile inserire tutte le classi nello stesso pacchetto e utilizzare l'accesso al pacchetto. Non è perfetto, poiché un hacker senza scrupoli potrebbe creare una classe canaglia nello stesso pacchetto e abusare dei tuoi dati. Quindi non farlo se stai creando una libreria di sicurezza. Bu se il codice è interno e ti fidi dei tuoi colleghi coder è una buona soluzione.

    
risposta data 20.03.2015 - 05:57
fonte
0

Suppongo che il linguaggio di implementazione sia Java, a causa della sintassi nella descrizione.

I tuoi metodi getXX e setXX di XXManager indicano che un'altra classe è responsabile sia della creazione che dell'utilizzo della tua classe XX. Quindi non può essere una classe interna privata di XXManager.

STW ha un punto in cui Manager è una parolaccia per una classe. Cosa fa veramente? A me sembra che ci sia solo un'istanza di XX e niente di più, nel qual caso non ha alcun senso che esista la classe.

    
risposta data 19.04.2015 - 08:35
fonte

Leggi altre domande sui tag