============================================================
Test.as
============================================================
package{
 public class Test{
  protected var _myAge:int;
 
  public function getAge():Number{
   return _myAge;
  }
  public function setAge(m:Number):void{
   _myAge=m;
  }
  public function getTest2():Test2{
   return new Test2();
  }
 }
}


internal class Test2{
 internal var t2:int=3;
 public function getT2():int{
  return t2;
 }
}
============================================================
Test2.fla
============================================================
import Test;

var m:Test = new Test();

//var t2:Test2 = m.getTest2();     //주석 제거시 에러 발생

trace(m.getTest2().getT2());      // 에러가 발생하지 않는다.

============================================================
var t2:Test2 = m.getTest2();  에서 에러가 발생하는 이유

Test2는 internal 형으로 선언되었기 때문에 Test2.fla에서 Test2의 형태를 확인할 수 없다.

하지만 m.getTest2().getT2());  처럼 선언한 다음 바로 접근한 경우는

내부에서 접근한 형태이기 때문에 바로 사용이 가능하다

이처럼 사용하도록 만든 것이 바로 Factory 공법이다.
============================================================

+ Recent posts