Вообще, у тебя может быть создан основной экземпляр на сервере (с полными данными), а на клиенте может быть просто эмулятор (с неполными данными), то есть репликация с сервера на клиент может выглядеть как передача структуры с айдишниками из таблицы, и контроллер на клиенте уже запускает функцию с созданием этих объектов для клиента. Я так понимаю, что у каждого класса один свой функционал, здесь можно нечто вроде общего интерфейса сделать и запускать функцию на сервере просто передав в нее индекс объекта из массива или его имя из таблицы (как удобнее), все зависит от задачи вообще. А там уже сервер запустит интерфейс у конкретного объекта, который соответствует переданной информации