Jsem budování komplexní systém, založený na čisté architektury (https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html), s použitím mnoha externích komponent, například platební terminál. Uvedené platební terminál má knihovna, která obsahuje základní funkce, včetně místa předat callback, tak, že terminál může informovat o průběhu transakce, např. (vložte pin nebo odebrat platební kartu).
Uvažujme scénář:
- Uživatel stiskne tlačítko "Provést transakci", pomocí nějakého adaptéru, systém zjistí, že uživatel chce provádět transakce.
- Systém využívající jiný druh adaptéru volání externího rozhraní API, a řekne "provést transakci".
- Nyní bychom chtěli informovat uživatele o pokroku... přes externí API callback.
aby bylo možné použít zpětné volání API, jeden nebo více z našich aplikací třídy musí implementovat metodu zpětného volání(s), a proto musí splňovat některé abstrakci definované API poskytovatele. Takže naše třídy musí záviset na API. Což znamená, že API nemůže být snadno terčem posměchu či narazil. Musíme zacházet s našimi callback objekty jako součást adaptér pro rozhraní API, a zkontrolujte ostatní aplikace tím, zesměšňovat nebo klučky.
Na jednu stranu, nechtěl bych, aby architektura závislá na externí API, ale vytvoření nové entity, konkrétně zvládnout API událostí se zdá, přes-inženýrství na mě.