この場合に戻るnull
と、メソッドが使いにくくなります。クライアントは、暗黙の障害状態を認識している必要があります。代わりに、例外をスローします。クライアントがこの条件をテストするための別のメソッドを提供することもできます。
if (CommandFactory.CanCreate(args)) {
ICommand command = CommandFactory.Create(args);
command.Execute();
}
または、ファクトリをインスタンス化可能にします。前処理が必要な場合はどちらが良いでしょうargs
:
CommandFactory factory = new CommandFactory(args);
if (factory.IsValid()) {
ICommand command = factory.Create();
command.Execute();
}
ファクトリのインターフェイスにより、作成が失敗する可能性があることが明確かつ明示的になりましたが、それでもクライアントはチェックメソッドを使用する必要があります。別のオプションはこれです:
ICommand command;
if (CommandFactory.TryCreate(args, out command)) {
// creation succeeded ...
}