SNOWFLAKES DRAWING PAPER

[AS3] ClassFactory 따라하기 예제 (유동적인 인터페이스 구현) 본문

개발/FLEX/AS3/AIR/BlazeDS

[AS3] ClassFactory 따라하기 예제 (유동적인 인터페이스 구현)

눈송2 2009. 8. 13. 14:21

리스트타입 컴퍼넌트를 사용하다보면 ItemRenderer를 사용하는 경우가 있다
ItemRenderer는 IFactory 인데 일반 컴퍼넌트를 ItemRenderer로 사용시 ClassFactory를 이용해서 IFactory 로 생성해서 리스트에 넣게된다

마찬가지로 인터페이스가 구현되지 않은 컴퍼넌트에 임의로 인터페이스를 구현해서 유연하게 하고 싶어 따라해서 예제를 만들어 봤다~^^



<<MXML>>
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="absolute"
    creationComplete="init()"
    >
    <mx:Script>
        <![CDATA[
            private function init():void
            {
                var test:ITest = new ClassTest(UTextInput);
                this.addChild( test.newInstance() as DisplayObject );
            }
        ]]>
    </mx:Script>
</mx:Application>


ITest.as
package
{
    public interface ITest
    {
        function newInstance():*;
    }
}

ClassTest.as
package
{
    public class ClassTest implements ITest
    {
        public function ClassTest(generator:Class = null)
        {
            super();
            this.generator = generator;
        }
        public var generator:Class;
        public var properties:Object = null;
        public function newInstance():*
        {
            var instance:Object = new generator();
   
            if (properties != null)
            {
                for (var p:String in properties)
                {
                    instance[p] = properties[p];
                }
               }
   
               return instance;
        }
    }
}


UTextInput.as
package
{
    import mx.controls.TextInput;
   
    public class UTextInput extends TextInput
    {
        public function UTextInput()
        {
        }

    }
}

Comments