Návrhový vzor Active Object patří do skupiny návrhových vzorů pro paralelní programování. Odděluje volání metody od vlastního provedení metody. Typickou situací pro jeho použití je, když je třeba z jednoho vlákna (či více vláken) volat metody objektu, který běží v jiném (svém vlastním) vláknu, tedy volat je asynchronně a zároveň zajistit, aby byly provedeny ve správném pořadí a ve správné chvíli – tj. když nastanou podmínky umožňující jejich spuštění.
Tento návrhový vzor je vhodné použít, když z různých vláken chceme volat metody jednoho objektu tak, aby tyto metody nezdržovaly nebo nezastavovaly běh těchto vláken, a zároveň chceme mít možnost ovlivňovat pořadí, v jakém objekt metody „zpracuje“ a samozřejmě se při tom vyhnout konfliktům jako race condition nebo deadlock.
Active Object využívá šesti tříd: Proxy, Scheduler, Activation List, Servant, Method Request a Future.
Proxy skrývá a odděluje celou implementaci Active Objectu od zbytku programu – vláken-klientů, které volají metody poskytované Active Objectem. Po zavolání metody klientem skrze Proxy tato vytvoří Method Request (požadavek na metodu), který představuje v zásadě použití návrhového vzoru Příkaz (Command), a zavolá příslušnou metodu objektu Scheduler pro zařazení požadavku do aktivačního seznamu (Activation List).
Třída Method Request je abstraktní třída, pro každou konkrétní poskytovanou metodu je vytvořen potomek této třídy. Scheduler ukládá požadavky do aktivačního seznamu a zjišťuje, která metoda z aktivačního seznamu může být zrovna spuštěna – tj. splňuje požadavky, které jsou součástí Method Requestu. Požadavky pak spouští pomocí objektu Servant, který v sobě skrývá implementaci jednotlivých metod.
Pokud metoda má vrátit nějaký výsledek, vrací Proxy objekt Future, do kterého je později, po vykonání příslušné metody, tento výsledek uložen.
Analogií z reálného života může být práce číšníka a kuchaře v restauraci: číšníka si můžeme představit jako Proxy – sbírá požadavky od klientů – hostů a předává je kuchaři, vytváří z požadavků seznam – Activation List. Kuchař pak požadavky zpracovává v takovém pořadí, aby optimálně využil své zdroje (plotny, pánve, hrnce atd.)