私はデータベースにテーブルの束を作成するInitializeメソッドを持つクラスを持っています。このクラスは、次のようになります。オブジェクトを初期化する必要があるときに使用するデザインパターン?
public class MyClass
{
private bool initialized = false;
public void Initialize()
{
if(!initialized)
{
//Install Database tables
initialized = true;
}
}
public void DoSomething()
{
//Some code which depends on the database tables being created
}
public void DoSomethingElse()
{
//Some other code which depends on the database tables being created
}
}
二つの方法のdoSomethingとDoSomethingElseはInitializeメソッドは、彼らがデータベース内のテーブルを持つに依存しているため先に進む前に呼び出されていることを確認する必要があります。 - コンストラクタは今非自明であり、例外を引き起こす可能性があるメソッドを呼び出す必要があるので、これは良いアイデアのように見えるしていません
は、クラスのコンストラクタで初期化メソッドを呼び出します。私は2つの選択肢があります。
2つの方法のそれぞれでInitializeメソッドを呼び出します。これは、いくつかのメソッドが複数ある場合は特に優れた解決策ではありません。
これをより洗練された方法で解決できるデザインパターンがありますか?
私がMyClass.createInstance()を複数回呼び出した場合、データベースは2回以上初期化されますか? – DaveH
@DaveHは 'Initialize'の実装方法に完全に依存しています。 –
@DaveHあなたのクラスが複数回initiliazされないようにしたい場合は、シングルトンデザインパターンを使用できます。 – Karolis