Ich re-Engineering eine App, die ich geschrieben habe und dabei bin ich derzeit Tabellen-Definitionen in verschiedene Schnittstellen, eine pro Tabelle und dann eine Gesamtschnittstelle für die gesamte Datenbank zu trennen.Gibt es Probleme mit referenzierten Schnittstellen?
Dabei habe ich einige allgemeine Konstanten in der Gesamtschnittstelle, die in den Tabellenschnittstellen verwendet werden. Die gesamte Schnittstelle verwendet auch Konstanten von den Tabellenschnittstellen.
Ich habe kompiliert und erfolgreich eine App (im Grunde die allgegenwärtige Hallo Welt App mit nur zwei zusätzlichen Zeilen Code) mit dieser und alles scheint in Ordnung zu sein. Ich bin eigentlich ziemlich überrascht, dass das kompiliert.
Grundsätzlich nehme ich einen Pfad, der dazu verurteilt ist, Probleme zu verursachen.
Hier einige Beispiel-Code: -
Schnittstelle DBAislesTableConstants Hinweis! reduziert auf nur 1 Zeile
import static mjt.shopwise.DBConstants.DEFAULTORDER;
import static mjt.shopwise.DBConstants.IDTYPE;
import static mjt.shopwise.DBConstants.INT;
import static mjt.shopwise.DBConstants.PERIOD;
import static mjt.shopwise.DBConstants.STD_ID;
import static mjt.shopwise.DBConstants.TXT;
public interface DBAislesTableConstants {
String AISLES_ID_COL = STD_ID;
String AISLES_ID_COL_FULL = AISLES_TABLE +
PERIOD +
AISLES_ID_COL;
String AISLES_ALTID_COL = AISLES_TABLE + STD_ID;
String AISLES_ALTID_COL_FULL = AISLES_TABLE +
PERIOD +
AISLES_ALTID_COL;
String AISLES_ID_TYPE = IDTYPE;
Boolean AISLES_ID_PRIMARY_INDEX = true;
DBColumn AISLESIDCOL = new DBColumn(AISLES_ID_COL,
AISLES_ID_TYPE,
AISLES_ID_PRIMARY_INDEX,
""
);
ArrayList<DBColumn> AISLESCOLS = new ArrayList<>(Arrays.asList(AISLESIDCOL));
DBTable AISLESTABLE = new DBTable(AISLES_TABLE,AISLESCOLS);
}
DBColum und DBTable werden mit Methoden definiert Klassen zu bauen, was ich werde ein internes Schema für die Erstellung und Aktualisierung der aktuellen Datenbank verwendet werden.
Schnittstelle DBConstants ist: -
DBDatabase eine definierte Klasse für die gesamte Datenbank ist z.B. Im Folgenden verwende ich die generateExportSchemaSQL-Methode.
Um dies zu testen, habe ich Folgendes verwendet, die erstellt die SQL, um alle Tabellen zu erstellen (führte dies und legte die SQL in SQLite Manager und erstellte die Tabellen). stophere wurde nur für einen Haltepunkt verwendet, damit ich das SQL untersuchen und kopieren konnte.
String sql = DBConstants.SHOPWISE.generateExportSchemaSQL();
int stophere = 0;
einige Fragen: Ihre Schnittstellen definieren nur konstante Werte, ist das richtig? und welche Probleme erwarten Sie? – nandsito
Ja nur Konstanten. Meine Sorge ist, dass die gegenseitige Bezugnahme Probleme verursachen kann, obwohl es aus einem kleinen Test als ok erscheint, dies zu tun. ZB verwendet DBAislesTableConstants Werte von DBConstants und umgekehrt (es wird 7 DB geben ??? TablesConstants jeder erhält Werte von DBConstants, arbeitet mit 3 bis dato getan). – MikeT