![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Привет.
Меня интересует структура одного приложения (организация системы доступа к api) для нескольких соц. сетей. К примеру мы выяснили в какой соц сети запущено приложение. Дальше нам необходимо запостить на стену (vk)/ленту (ok) сообщение. Как это делаю я. Создал интерфейс iSocialManager и 2 Класса, которые его имплементируют: VKManager и OKManager. iSocialManager - содержит весь набор методов, которые реализуют VKManager и OKManager. Меня смущает то, что в Классе VKManager есть метод (к примеру getImageUploadServer), который не используется в OKManager тем не менее я вынужден его создать в OKManager (хоть и пустым). Выходит, что OKManager содержит пустые методы, которые используются в VKManager и наоборот. Как это выглядит на AS: if(this.socialType == 'vk') { var socialManager:ISocialManager = new VKManager(); } else if(this.socialType == 'ok') { var socialManager:ISocialManager = new OKManager(); } socialManager.someFunction(); if(this.socialType == 'vk') { var vkManager:VKManager = new VKManager(); } else if(this.socialType == 'ok') { var okManager:OKManager = new OKManager(); } // некое оповещение function onShareButtonClick():void { if(this.socialType == 'vk') { // публикация на стену vkManager.wallPost(); } else if(this.socialType == 'ok') { // Публикация в ленту okManager.streamPost(); } } Не делать, ведь, 2 флешки для 2-х соц сетей. Спасибо. |
|
|||||
|
Первый, на мой взгляд, изящнее.
В интерфейсе имеет смысл указывать только общие методы (postMessage, inviteFriends, showPayment). Как они называются в реальной соц сети нам без разницы, это уже в реализации каждого класса будете закладывать. Но если в какой-то соц сети есть уникальный метод, который необходимо выполнить, то зная что у вас то создав некий уникальный метод в VKManager вы всегда можете обратиться к нему:
__________________
Будь проще. Последний раз редактировалось KBAC; 10.11.2011 в 13:52. Причина: очепятки |
|
|||||
|
Ага. В принципе.
ИМХО: Все упирается в "уникальные" возможности соцсети. В ВК больше выбор, сответственно флэшки могут отличаться наличием тех или иных кнопок, вешать все это на призрачную простоту if(socialType="vk") по мне так излишне. Поэтому должно быть "ядро" программы работающее с интерфейсами (ISocialManager, ISocialFeatures например). Ядро вообще ничего не знает про ВК, ОК, ММ, ФБ. И соцсетевые классы, реализующие эти интерфейсы (VKManager, OKManager). Разные MainClass, каждый из которых пихает в ядро свой набор классов. //VKMainClass socialManager:ISocialManager = new VKManager(); socialFeatures:ISocialFeatures = new VKFeatures(); Таким образом вы легко прикрутите другие соцсети.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
GBee, но ведь так и получается, только вместо "призрачной простоты if(socialType="vk")" предлагаете использовать разные классы, которые по сути будут выполнять то же самое, ведь всё равно в ядре закладываете весь всевозможный функционал, судя по вашим словам.
В случае с if, прикручивание соц сети будет точно такое же простое (добавляем ещё один else if). Так что на вкус и цвет) Ну и разные MainClass кому-то могут быть елементарно нагляднее и удобнее, это да.
__________________
Будь проще. |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
У меня на каждую сеть по одной паре классов (ConnectorAPI и WallPostSender). Приложение само по себе не заморачивается о том, в какой сети открылось и обращается к функционалу через SocialNetwork.connectorAPI и SocialNetwork.wallPostSender.
Определение, в какой сети открылись, в самом начале, тогда же производится и установка всех стетевых параметров. Кстати, насчет разного функционала сетей - надо гнуть геймдизов на единый интерфейс и единые социальные функции. Основное различие в публикации на стену (ВК) или в ленту новостей (ММ, ОК). Но за счет применения разных текстов вполне можно выкрутиться. Цитата:
![]() |
|
|||||
|
Цитата:
Цитата:
Цитата:
__________________
Будь проще. |
|
|||||
|
Цитата:
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Цитата:
Можно сделать иначе - поставить сервер, к которому приложение после запуска будет отсылать appID, полученный от соцсети, и сервер будет выдавать всю необходимую информацию для работы (где открылись, к каким серверам стучаться, где лежат файлы данных и пр.). Добавлено через 2 минуты Цитата:
Потому что с технической точки зрения у меня к ним претензий нет. Все работает. Еще бы ММ на мэйлики перешел окончательно и вообще красота. Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 03:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|