2012-11-21 4 views
6

메인 클래스를 만드는 방법이 있습니까? 기본 .fla 기반의 정적 클래스는 정적입니까? 그래서 우리는 클래스에서 매개 변수로 메인 자체의 인스턴스를 전달해야하기 때문에 다른 클래스에서 참조 할 수있는 java와 같이 사용할 수 있습니다. 그렇지 않으면 느슨한 참조입니다. 정적 접두사를 추가하려고했지만 as3이 그것을 허용하지 않는 것 같습니다.정적 메인 클래스 - AS3

답변

9

AS3에는 정적 클래스의 개념이 없습니다.

public class Main extends Sprite { 

    public static var instance:Main; 

    public function Main() { 
     instance = this; 
    } 

을 ...하거나 관리하기가 어려워진다하더라도 그냥 static으로 다른 속성/메소드를 노출 표시 :

당신은 메인 클래스의 고유 한 인스턴스를 노출 싱글 톤 패턴을 사용할 수 있습니다.

내가 그 사용 static 때로는 나쁜 코드 디자인에 이르게 불구하고 언급 할 필요가

+0

메인 클래스에 대한 인터페이스를 만들고이를 메인에 생성 된 하위 클래스에 대한 참조로 전달하십시오. 그러나 인스턴스에 대한 좋은 점은 참조를 필요로하지 않고 코드의 모든 레이어에서 사용할 수 있다는 것입니다.하지만 Antoine이 말했듯이 잘못된 디자인에 대한 함정이 될 수 있습니다. – Gone3d

3

(대신, 당신은 예를 들어 자신의 생성자를 통해 필요한 클래스에 Main의 인스턴스를 전달할 수)이 인기되지 않습니다 대답, 알아요 ... 정적 속성을 사용하여 인스턴스를 노출하는 것은 정말 나쁜 생각입니다. 싱글 톤 안티 패턴은 매우 인기가 있지만 그렇지 않아야합니다. 그러면 나쁜 습관이 생겨 불필요하게 클래스를 서로 연결합니다.

다른 클래스의 메인 클래스를 실제로 참조해야하는지 여부를 자문 해봐야합니까? AS3에는 필요한 모든 느슨한 커플 링을 제공 할 수있는 이벤트 시스템이 있습니다. 표시 객체가 주 클래스 인스턴스와 통신해야하는 경우이 작업은 표시 목록을 통해 이벤트를 보내서 수행 할 수 있습니다.

종속성 관리의 문제는 종속성 주입 프레임 워크에서 처리하는 것이 가장 좋습니다 (많은 시스템 중 일부는 중앙 집중식 메시징 시스템을 사용하여 훨씬 많은 이벤트를 처리합니다). 인기있는 앱 (PureMVC, RobotLegs 등) 중 하나가 과도 함을 느낄 경우 간단하고 제한적인 앱을 쉽게 만들 수 있습니다.

당신의 인생을 비참하게 만들고 코드를 부서지기 쉽고, 융통성이없고, 테스트 할 수없고, 신뢰할 수없고, 버그가 발생하기 때문에 결코 Singletons 나 정적 인스턴스 접근 자에 의존 할 필요가없는 많은 도구와 패턴이 있습니다.

+0

의미가 있습니다. 나는 정적과 싱글 톤을 피하고 모든 컨트롤을 메인에 두는 연습을 시도 할 것이다. 그래도 할 방법을 찾아야합니다. 당신은 몇 가지 예를 들었을 수 있지만 지시에 대해 어쨌든 감사드립니다. :에스 –