Flex 프레임 워크에 대해 알고있는 사람이 있습니까? Flex 컴파일러에서 확장을 실행하거나 또는 응용 프로그램의 데이터 모델의 강력한 형식화 된 프록시 클래스를 생성 할 수있는 빌드 단계 만 있으면됩니다.느린 인스턴스화를위한 Flex 형식의 프록시 클래스
2 개 주 일들이 우리가 프록시의로 할 수 있습니다 (자바의 Hibernate는 게으른 프록시 개체가 어떻게 비슷한)
- 우리가 게으르게 구문 분석하고 인스턴스를 인스턴스화 할 에디터 응용 프로그램에서 setter 호출을 구현하여 어떤 객체가 수정되었는지 추적 할 수 있도록했습니다.
- 이 경우에는 ChangeWatcther를 프로그래밍 방식으로 설정하는 것 이상의 프록시가 필요합니다. Array 추가/제거 및 추적 가능 "참조"obj ECTS 그래서 "참조 키"가 변경 될 때 우리는 우리가 프록시가 그 객체가 직렬화에서 기본적으로 추상적 인로드 할 때 할 첫 번째 경우 키
하여 참조하는 이러한 개체를 저장 알고 데이터이지만 실제 객체 인 경우 동일한 공개 속성 및 데이터 액세스 패턴을 사용하여 참조를 계속 전달합니다.
기본적으로 프록시는 메서드가 처음 호출 될 때 개체를 인스턴스화합니다.
as3-commons-bytecode과 같은 AS3 바이트 코드 라이브러리를 사용할 수 있습니다.
또는 GraniteDS 코드 생성을 재사용 할 수도 있습니다.
코드를 결정적으로 생성하기 때문에 코드를 생성하는 것이 더 좋으며 런타임에 쉽게 디버깅 할 수 있다면 좋을 것입니다.
MXMLC에서 MXML 파일에서 AS3 코드를 생성 할 때 MXMLC와 같은 작업을 수행 할 수 있는지 알 수 있습니까?
또한 컴파일 파이프 라인에서 코드를 생성 할 수있는 "언제"를 제어 할 수 있습니까? getter/setters 대신 public 필드를 사용하는 많은 데이터 객체가 있지만 [Bindable]이므로 가능한 경우 생성 된 getter/setter 메소드를 기반으로 프록시를 생성합니다.
는 여기에 예제 응용 프로그램 데이터 객체 및 프록시 클래스의 : AS3 - 커먼즈 바이트 코드 라이브러리에 좀 더 깊이 파고
[Bindable]
public class PersonDTO implements Serializable {
private var _name:String;
private var _age:Number
public function get age():Number {
return _age;
}
public function set age(a:Number):void {
_age = a;
}
public function get name():String {
return _name;
}
public function set name(n:String):void {
_name = n;
}
public void readObject(data:*) {
//...
}
}
// GENERATED CLASS BASED ON PersonDTO
public class LazyProxy_PersonDTO extends PersonDTO {
private var _instance:PersonDTO = null;
private var _instanceData:*;
private function getInstance():void {
if (_instance == null) {
_instance = new PersonDTO();
_instance.readObject(_instanceData);
}
}
override public function get age():Number {
//Ensure object is instantiated
return getInstance().age;
}
override public function get name():String {
//Ensure object is instantiated
return getInstance().name;
}
}
// GENERATED CLASS BASED ON PersonDTO
public class LogChangeProxy_PersonDTO extends PersonDTO {
//This will be set in the application
public var instance:PersonDTO;
//set by application
public var dirtyWatcher:DirtyWatcherManager;
override public function set age(a:Number):void {
dirtyWatcher.markAsDirty(instance);
instance.age = a;
}
}
확실하지; 그러나 dbHibernate http://code.google.com/p/dphibernate/를 확인하십시오. 그것은 당신이 찾고있는 것일 수 있습니다. – JeffryHouser