Cześć,
w moim kodzie chcę zrobić coś takiego.
Kod będzie wykonywał zadania. Każde zadanie jest różne i wykonywane przez wyspecjalizowanego do tego zadania pracownika. Zadania będą takie same na wszystkich platformach, ale kod, który je wykonuje jest zależny od platformy. Przykład:
Mamy zadanie: Zmień głośność.
Mamy do tego wyspecjalizowanego pracownika: ZmieniaczGłośności
Tyle, że kod do zmieniania głośności jest inny dla windowsa i linuxa. Na windowsie możemy wywołać funkcję z WinApi waveOutSetVolume(), a na linuxie pewnie jakąś inną.
I teraz jak to zrobić, żeby napisać jeden kod, który się skompiluje na obu platformach?
Myślałem o wzorcu Metoda wytwórcza, która będzie tworzyła pracowników oraz kodem opartym na #ifdef itp. Czyli np. tworzymy dwa pliki. ZmieniaczGlosnosciWindows.hpp oraz ZmieniaczGlosnosciLinux.hpp. W obu była by zadeklarowana klasa ZmieniaczGlosnosci, która by już tą zmianą głośności się zajmowała. W pliku metody wytwórczej mielibyśmy coś takiego
#ifdef WINDOWS
#include <ZmieniaczGloscnosciWindows.hpp>
#else
#include <ZmieniaczGloscnosciLinux.hpp>
#endif
Czy to jest dobre podejście? Jeżeli nie to co proponujecie?