캡슐화는이 경우 귀하의 친구입니다. 외부/제 3 자 API를 사용할 때 데이터 용으로 자체 래퍼 클래스를 만드는 것을 좋아합니다. 'fbID'와 'userName'에만 관심이 있다고 가정 해 봅시다. 일단 검색되면이 데이터를 보유하는 클래스를 만드십시오 (getters가있는 개인 vars 및 1 개 이상의 setter). 일부 골격 코드는 : 당신이 원하는 경우
class MyUserClass{
//declare vars here (_fbID, _userName)
public function setData(userID:String, userName:String):void{
//set the values here.
}
//getters here (get fbID, get userName)
}
당신은 2 개 세터 기능을 사용할 수 있지만 요점은 당신이 원하는 데이터를 호출 할 수있을 것입니다. 전체 애플리케이션이 클래스에서이 정보를 가져오고 API가 직접 가져 오지 않으면 오프라인으로 작업 할 수 있습니다. 오프라인 모드에서는 호환되는 '가짜'데이터를 플러그인하여 제대로 작동하는지 확인할 수 있습니다.
이제는 페이 스북 (Facebook)에 전화 할 때마다 래퍼 유형을 만들어 다음 단계로 가져 가야합니다. 이것이 의미하는 바는 당신이 fb에서 무엇을 기대 하는지를 알기 때문에 실제로 그것을 얻은 척하고 그곳에서부터 진행할 수 있다는 것입니다. 친구 ID 목록 요청하기? 합리적인 가짜 목록을 만들어 응용 프로그램에서 사용하도록하십시오. 더 좋은 방법은 가짜 오프라인 사용자를 원하는만큼 생성하고 가짜 데이터를 이벤트 수신기에 반환하기 전에 서버 호출을 임의의 지연 시간을 지연 시키십시오. 이는 경쟁 조건에 대한 테스트에도 도움이됩니다.
이렇게하는 한 가지 방법은 API 호출을 실행하도록 클래스를 만들고 확장하는 것입니다. 즐겨.
import flash.events.EventDispatcher;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.utils.Timer;
class MyApiCaller extends EventDispatcher{
//set up vars to hold call result data
protected var _someData:String;
//make sure to declare some event types for the callbacks
public static const SERVERCALL1_COMPLETE:String = "servercall1_complete";
function MyApiCaller(){
//init things....
}
public function doServerCall1(...args:*):void {
//create the ulrLoader etc...
//set up event listener to onServerCall1Complete
}
public function onServerCall1Complete(event:Event):void {
//parse results, save to vars
//fire event to notify the caller
dispatchEvent(new Event(SERVERCALL1_COMPLETE));
}
//getter to be used when the waiting object gets the SERVERCALL1_COMPLETE event
public function get someData():String {return _someData;}
}
class MyFakeApiCaller extends MyApiCaller{
//set up any additional types (random user data etc..) that would not be found in the base class
//no need to redeclare the event types
function MyFakeApiCaller(){
//init things....
}
override public function doServerCall1(...args:*):void {
//wait a random amount of time via Timer, set up event listener to onServerCall1Complete
}
override public function onServerCall1Complete(event:Event):void {
//event is a TimerEvent in this case
//generate data/choose random data
//save to vars: _someData = ...
//fire event to notify the caller
dispatchEvent(new Event(MyApiCaller.SERVERCALL1_COMPLETE));
}
//getter from base class will be used as usual
}
출처
2012-02-01 04:01:54
mfa
답장을 보내 주셔서 감사합니다! 어제 밤이 마지막 접근법에 대해 생각해 보았습니다. 프로젝트에서 작업 중일 수있는 다른 사람들을 위해 개발을 단순화 할 것이라고 생각합니다. 모든 Facebook 요청에서 데이터 덤프를 수행하여 JSON 파일로 저장해야합니다. 그렇게하면 작업에 고려해야 할 실제 로딩 및 실제 데이터가 있습니다. – maskedbacon