다음은 예제입니다.
모듈이 기본 앱에 대해 몇 가지 작업을 수행하기를 원합니다. 예를 들어, 모듈에 일부 사용자에게 알리는 기능을 제공하게하십시오.
그래서, 우리는 그 기능에 대한 인터페이스를 선언 : 우리가 결코하여야한다 주요 응용 프로그램에서 다음
<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" layout="absolute" width="400" height="300"
implements="test.IAlertable"
>
<fx:Script>
<![CDATA[
import mx.controls.Alert;
public function alert(message:String):void{
Alert.show(message,message);
}
]]>
</fx:Script>
</mx:Module>
그리고 :
이
package test
{
public interface IAlertable
{
function alert(message:String):void;
}
}
그런 다음 우리는 우리의 모듈이 해당 인터페이스에 선언 된 기능을 제공 할 수 있다고 선언 모듈 클래스 이름이나 구현에 관심이 있다면 원하는 기능이 있음을 알아야합니다.
<fx:Script>
<![CDATA[
import test.IAlertable;
protected function handleCreationComplete():void
{
moduleLoader.loadModule('test/TestModule.swf');
}
protected function testInterface():void{
var alertModule:IAlertable = IAlertable(moduleLoader.child);
alertModule.alert('Hello module world!');
}
]]>
</fx:Script>
<mx:ModuleLoader id="moduleLoader" width="100%" height="100%" ready="testInterface()"/>
이제 주 앱을 다시 컴파일하지 않고도 언제든지 기능 구현을 변경할 수 있습니다 (예를 들어, 경고 대신 추적을 수행 할 수 있음). 해당 인터페이스로 다른 모듈 클래스를 만들 수도 있습니다. 주 앱은 변화.
즉 갑자기 필요가있는 경우 모듈을 다른 모듈로 교체 할 수 없음을 의미합니다. 따라서 컴파일러는 Module 클래스가 일부 인터페이스를 구현하도록하고 기본 응용 프로그램의 해당 인터페이스를 통해 모든 작업을 수행 할 것을 권장합니다. 이 경우 문제가없는 유사한 인터페이스로 다른 모듈을로드 할 수 있습니다. 공포와 재앙. 그리고 그런데,이 질문에 대한 첫 번째 질문이 아니므로 검색이 많은 도움이 될 수 있습니다. – user1875642
모듈에 인터페이스를 어떻게 구현할 수 있습니까? –