Příkaz Pattern: Spuštění více příkazů za sebou

hlasů
8

Chci vydat sérii Command poprav, ale pouze tehdy, když před příkaz uspěl. Právě teď jsem zvyšování událost uvnitř objektu příkaz indikující, zda je příkaz úspěšný nebo ne. Já to s použitím kontrolovat výkon, ale to je nevkusný.

Příklad:

command1.CommandSucceeded += delegate { command2.Execute(); };
command1.Execute();

To funguje, ale to je neohrabané a unintuitive. Mohl bych projít boolean zpět na Execute () indikující úspěch nebo neúspěch, ale to je po stejné cestě. Mohl bych hodit výjimky k selhání, což by mohlo mít za následek čistší kód, ale může být zbytečná.

Nějaké návrhy?

Položena 26/08/2009 v 23:09
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
7

Mám kolem tohoto zřízením příkaz „řetěz“. Vytvořil jsem objekt Command, který má další příkazy, pak oheň každý z nich v pořadí, kdy se Do nazývá. Ve vašem případě můžete mít kaz CALL delegáta a jen vypálit dalšího příkazu v pořadí, pokud to bylo úspěšné.

Jedním ze způsobů, jak to udělat, myslím.

Odpovězeno 26/08/2009 v 23:16
zdroj uživatelem

hlasů
1

Vrácení boolean nebo objekt reprezentující určitý stav není tak špatné. To by mohlo být cítit neohrabané, ale je to jednoduché a jasné.

Jedna realizace Já používám asi takhle:

Poprvé jsem přidat příkaz objektů do seznamu.

List<ICommand> commands = new List<ICommand>;
commands.Add(command1);
commands.Add(command2);

Pak seznam příkazů objektů dostane proveden takto:

foreach (ICommand command in commands)
{
  bool success = command.Execute();
  if (!success) break;
}
Odpovězeno 26/08/2009 v 23:24
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more