Ich schreibe eine Reihe von kleinen, einfachen Anwendungen, die eine gemeinsame Struktur teilen und einige der gleichen Dinge auf die gleiche Art und Weise tun müssen (zB Protokollierung, Datenbankverbindung Setup, Umgebung Setup) und ich Ich suche nach einem Rat bei der Strukturierung der wiederverwendbaren Komponenten. Der Code ist in einer stark und statisch typisierten Sprache geschrieben (z. B. Java oder C#, ich musste dieses Problem in beiden lösen). Im Moment habe ich das:Architektur von einigen wiederverwendbaren Code
abstract class EmptyApp //this is the reusable bit
{
//various useful fields: loggers, db connections
abstract function body()
function run()
{
//do setup
this.body()
//do cleanup
}
}
class theApp extends EmptyApp //this is a given app
{
function body()
{
//do stuff using some fields from EmptyApp
}
function main()
{
theApp app = new theApp()
app.run()
}
}
Gibt es einen besseren Weg? Vielleicht wie folgt? Ich habe Probleme mit den Kompromissen mit einem Gewicht ...
abstract class EmptyApp
{
//various fields
}
class ReusableBits
{
static function doSetup(EmptyApp theApp)
static function doCleanup(EmptyApp theApp)
}
class theApp extends EmptyApp
{
function main()
{
ReusableBits.doSetup(this);
//do stuff using some fields from EmptyApp
ReusableBits.doCleanup(this);
}
}
Ein offensichtlicher Nachteil ist, dass mit der Option 2, der ‚Rahmen‘ nicht die App in einem Try-Catch-Block wickeln kann ...