Ahoj, potřeboval bych trochu pomoct s návrhovými vzory pro následující úkol: Mám naprogramovat hru Solitaire Klondike a to jak ve verzi pro cmd, tak ve verzi s grafickým rozhraním přes Qt.
Můj prvotní nápad bylo vytvořit si třídu GameMgr, který bude obstarávat logiku hry a který bude pracovat nad třídami Library, Piles a Foundations, které v sobě budou spravovat zásobníky a seznamy objektů Card. Každá třída by se pak dala specializovat pro CLI a pro QT verzi hry, při čemž specializace by spočívala v implementaci metod pro vykreslování na obrazovku. Zde jsem ale narazil na problém.
Jak jednoduše v C++ zajistit, aby GameMgr pracoval buď nad CLI nebo QT verzemi objektů Library, Piles a Foundations a jak zajistit, aby tyto objekty pak pracovaly se správnou verzí objektů Card (či případně i jiných objektů seznamů a zásobníků, pokud budu chtít vykreslovat i ty)?
Napadla mě pouze jedna velice ošklivá varianta, kdy by všechny třídy využívaly šablon a GameMgr objekt by se pak vytvářel nějak tato: GameMgr<Library_Cli<Card_Cli>, Piles_Cli<Card_Cli, Stack_Cli>, Foundations_Cli<Card_Cli>> .... což mi nepřijde jako dvakrát elegantní řešení.
Tipnul bych si, že lepší řešení asi vyžaduje úplně jiný systém dědění, žádný mě ale nenapadá.
Díky předem za pomoc