Как связать различные базовые решения в общий API? - PullRequest
1 голос
/ 25 февраля 2011

первое сообщение, извините, если я заранее нарушаю какие-либо соглашения: -)

Интересно, как бы вы справились со следующим сценарием.

Мне нужно создать общий API, которыйпредоставляет функции отслеживания игры (отслеживание нажатий, отслеживание определенного события и т. д.).Этот универсальный API должен подключаться к одному из двух (или более) индивидуальных решений по отслеживанию, предоставляемых третьими сторонами (например, itracku.com и itrackutoo.com) в фоновом режиме.

Специальные решения по отслеживанию имеют аналогичные функции (trackClick, trackEvent), но значительно различаются по количеству требуемых аргументов (например, один требует передачи одного аргумента, другой - 6).

Для того, чтобы универсальный API-интерфейс легко переключался между нажатием на любое из предложенных решений,Прав ли я, предполагая, что ВСЕ аргументы должны быть заранее определены, чтобы облегчить переключение решений отслеживания?Желание НЕ нужно перекомпилировать .swfs, чтобы переключить решение для отслеживания (т. Е. Оно переключается через XML-конфигурацию).Я думал о достижении этого, когда мои общие API-функции принимают один объект в качестве аргумента, например,

// itracku.com
iTrackUObj:Object = new Object();
iTrackuObj.param1 = 1;

// itrackutoo.com
iTrackUTooObj:Object = new Object();
iTrackUTooObj.param1 = 1;
iTrackUTooObj.param1 = 2;
iTrackUTooObj.param1 = 3;
iTrackUTooObj.param1 = 4;
iTrackUTooObj.param1 = 5;
iTrackUTooObj.param1 = 6;

// my generic function, which accepts an object as a single parameter then validates the object
myGenericFunction(iTrackUObj);

//…or

myGenericFunction(iTrackUTooObj);

Можете ли вы придумать более эффективный способ достижения этого?Я думаю, это скорее вопрос технической архитектуры, нежели вопроса ActionScript, но я думаю, что вышеизложенное может показаться немного неуклюжим при использовании в реальных условиях.

Спасибо за любую помощь или предложения

1 Ответ

1 голос
/ 25 февраля 2011

Я бы сделал это лично, создав универсальный TrackObj со всеми возможными параметрами, которые может использовать любой из бэкэндов отслеживания. Затем этот TrackObj передается в общую функцию TrackFunction, а внутри функции он создает объект TrackU или TrackUToo и передает его в выбранный бэкэнд конфигурации XML.

Таким образом, ваш API имеет собственный универсальный API внешнего интерфейса, в котором, если вы соответствуете требованиям своего API, пользователь автоматически отвечает требованиям любого API, который он, возможно, мог бы использовать при поддержке. Это будет означать, что пользователям всегда придется предоставлять 6 параметров, даже если их бэкэнд требует только один. Это может быть облегчено для пользователя, хотя с интеллектуальными значениями по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...