Tworzysz silnik 3d. Chcesz najlepszych światów wieloplatformowych. Nagle zdajesz sobie sprawę, że jeśli chcesz używać Direct3D na komputerach z systemem Windows i OpenGL na OSX / Linux, musisz poświęcić obsługiwane funkcje obu najmniej powszechnym mianownikom.
Niektórzy mogą korzystać z OpenGL w trzech systemach operacyjnych, ponieważ sam w sobie wydaje się to najmniej wspólny mianownik. Wszystko jest dobrze. Następnie musisz przenieść backend API graficznego do GX Nintendo, musisz także utworzyć ścieżkę PS3 i Xbox360.
Co robisz? Czy projektujesz własny interfejs API, który sam w sobie jest najmniej wspólnym mianownikiem, i piszesz dla niego implementacje zaplecza dla każdej platformy, czy piszesz dla każdej platformy, która ma swój oddział?
Jeśli zdecydujesz się zaprojektować własny interfejs API, czy używasz wzorca mostu lub własnego voodoo? Gdzie kończy się szaleństwo, kiedy zdajesz sobie sprawę ze wszystkiego, a podejście do zlewu kuchennego musi się skończyć i w zasadzie masz oddzielny silnik dla każdej platformy jako oddziału. Lub trzymasz się wszystkiego i zlewu kuchennego i zachowujesz specyfikę platformy w specjalizacjach modułu zaplecza dla każdej platformy.