Basierend auf
Ich habe die folgende Android-Paketstruktur erstellt:
com.company.product.activities
com.company.product.database
com.company.product.fragments
com.company.product.fragments.adapter
com.company.product.models
Aber manchmal muss ich nach Bedarf einen Adapter für einen benutzerdefinierten Dialog haben.
Wo soll ich das hinstellen? Da es sich um einen kleinen Adapter handelt, wird dieser meist innerhalb einer Aktivität in einem Dialog verwendet, wobei die Vorgänge sich auf die Aktivität zurückführen lassen.
Probleme sind:
Zu viel Kontext (Aktivität) Verweis wird an den Adapter übergeben.
Alle Methoden werden öffentlich, was gegen das OOP-Konzept des Verbergens von Implementierungsdetails verstößt.
Wie viel Unterschied würde es machen, einen privaten Adapter zusammen mit der Packstruktur zu haben? Ist dies die Standardmethode für die Android-Projektpaketstruktur?
Ich würde den Adapter in ein adapters
-Paket setzen. Selbst wenn Sie it is small adapter, mostly its to be used within a activity in a dialog, with operations reflecting back to activity
kennen, werden Sie nie wissen, wie sich dieser Adapter entwickeln wird und in welcher Situation er verwendet wird.
In Bezug auf Ihre Bedenken:
Too much of context references
- Jede Instanz Ihres Adapters hat eine einzige Context
für die Referenz. Solange Sie nichts von Ihrem Adapter verlieren, ist das kein Problem. Möglicherweise haben Sie diesen Adapter auch durch andere Implementierungen erweitert, und das gilt auch für diese Implementierung. All methods end up public, which fails the OOP's concept of hiding implementation details
respektiert: Lassen Sie den Adapter nicht mehr als die angegebenen Daten anzeigen . Single Responsibility Principle
access abhält, wenn Sie beschäftigen sich mit dem Aufruf von private
code aus inneren Klassen. Also, um es kurz zu fassen, unter Berücksichtigung der Wiederverwendbarkeit, private
und des Best-Practice-Artikels, bin ich dafür oder teile Single Responsibility
von dedizierten Klassen.
Tags und Links android package standards project-structure