(免責事項:この質問はASP.NET に固有のものではありません)
ログイン コントロールと同様に、テンプレート化できるコントロールがあります。
public abstract class TemplatedControl : CompositeControl
{
public ITemplate Template { get; set; }
protected override void CreateChildControls()
{
var template = this.Template ?? CreateDefaultTemplate();
// ...
}
protected virtual ITemplate CreateDefaultTemplate()
{
return null;
}
}
テンプレート化されたコントロールは次のようになります。
public class FooControl : TemplatedControl
{
public override ITemplate CreateDefaultTemplate()
{
return new FooTemplate();
}
}
私の質問は次のとおりです。代わりにここではシングルトンが適切でしょうか?
public override ITemplate CreateDefaultTemplate()
{
return FooTemplate.Instance;
}
シングルトンはグローバル変数に関連付けられています。この場合、状態はありません。
シングルトンは、ハードコーディングされた依存関係にも関連付けられています。この場合、特定のタイプの知識が保証されます。