私は共通の構造を共有し、同じことをいくつか同じ方法(ログ、データベース接続、環境設定など)で行う必要がある、再利用可能なコンポーネントを構造化する際のアドバイスを探しています。コードは強く静的に型付けされた言語(JavaやC#など)で書かれています。私はこの問題を両方とも解決しなければなりませんでした。現時点で私はこれを持っています:再利用可能なコードのアーキテクチャ
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()
}
}
良い方法はありますか?多分次のように?私は、トレードオフを計量トラブルを抱えて...
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);
}
}
1つの明らかなトレードオフは、オプション2で、「フレームワーク」はtry-catchブロックでアプリをラップすることができないということです...
よ