문제

나는 제품을 개발하의 무리와 함께 연동 조(서버,클라이언트 라이브러리 등)과 한 조각의 작은 라이브러리에는 사용자 링크는 자신의 클라이언트 측 코드(가 같은 종류의 플리커 API 또는 Google Maps API).일단 그들이 포함되어 있는 라이브러리,모든 연동 비트 마술 후크입니다.도록 API 단순 주요,중요한 목표입니다.

API 에는 사용자에게 표시는 그랜드 두 개의 클래스고 일곱 공용 방법이 있습니다.쉬워요,레몬 경우 후기 작성자와 숙박 시설 담당자.

그러나 단순하게 만들어진 환상입니다.라이브러리에 저는 배포에 따라서 다른 라이브러리,136 자체 클래스(이상의 공공 방법).빌드 프로세스 동안,나는 링크는 두 개의 라이브러리 함께하는 단일 결과물의 편의를 위해 통합 및 배포에 의해 API 소비자입니다.

문제 내가 직면 지금은 나가 원하지 않는 최종 사용자(응용 프로그램 개발자를 통합하는 내 소프트웨어는 자신을 향상시키기 위해 기능)을 방해되는 요구한,익사의 급류에 불필요한 복잡합니다.

외부에서,라이브러리 같아야 그것을 정확하게 포함한 두 개의 공용 클래스와 정확히 일곱 공용 방법이 있습니다.

어떻게 처리하는지 이런 것에서 자신의 프로젝트?내가 관심있는 언어에 관계없 솔루션뿐만 아니라,다양한 기술을 다른 언어로,컴파일러,그리고 빌드 도구.

내 특정 경우에,나는 개발을 위해 플래시 플랫폼(기/Flex/Actionscript)으로 디지털 라이브러리 파일이 있습니다.빌드 방법은 것과 유사하는 자바 플랫폼,모든 수업은 번들로 압축된 코드 모듈으로 동등한 가시성(Actionscript SWC 파일,개념적으로 거의 동일하 Java JAR 파일).

하지 않습니다.순서는"내"수정을 위한 수업 방법?즉,정확히 종류의 것은 내가 찾고 있고,누구나 알고있는 경우의 까다로운 기술을 숨기의 가시성을 클래스 사이에 디지털 경계,여러분의 의견을 듣고 싶습니다.

도움이 되었습니까?

해결책

그것은 매우 어렵 것을 숨기는니다.거기에는 내부에 액세스자 그리고 또한 네임스페이스입니다.Adobe 는 일부에 대한 도움말 패키지와 네임스페이스 는 것이 유용할 수 있습니다.

이는 네임스페이스하지 않는 접근이 제한-그들은 정말 사용되는 상징하는 장소로 다른...글쎄 네임스페이스가 있습니다.사용될 수 있다 2 버전의 동일한 라이브러리에서 액세스 동 swf.내 생각입니다 그것은 단지 몇 가지 이름 엉망으로 뒤에 삽입하기 전에 정의 상징으로 표입니다.하고자 하는 사용자의 경우,그들은 수를 가져오는 네임스페이스 및 아무것도에 액세스하는"숨"뒤에 있습니다.나는 그 때는 해킹이 떨어져 Adobe 구성 요소입니다.는 말했다,는 경우에는 사용자가 원고의 능력을 결정하는 네임스페이스의 식별자보다 당신은 약간의 무명을 통해 보안을 제공합니다.

패키지 액세스 지정자(예:개인하고 내부)가까운 당신이 무엇을 원합니다.그러나는 경우 당신 액세스할 수 있는 클래스 외부 패키지의 경계를 다음 사용자 도 할 수 있습니다.도 있 해킹을 봤어요 주위 수 있는 검사에는 푸동하고 뱉어의 목록을 임베디드 클래는 하나를 사용할 수 있습 getClassByDefinition 인스턴스화.

그래서,당신은 숨길 수 있습니다 클래스가 존재를 문서에 사용,내부 및 개인 액세스 지정자 가능하며 다음 사용 네임스페이스를 롤러의 클래스 이름.하지만 당신을 막을 수 없이 결정된 사람에서 발견하고 이러한 클래스를 사용하.

다른 팁

네임 스페이스를 사용 하여이 문제를 해결할 수 있다고 생각합니다.http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=livedocs_parts&file=000040.html

네임 스페이스는 C#에서와 같이 ActionScript에서 동일하지 않으며 XML의 네임 스페이스와 비슷합니다.

또한, 내가 사용한 다른 트릭 중 하나 ( "내부"수정 자 또는 네임 스페이스에 대해 알지 못했기 때문에)는 다음과 같이 현재 패키지 외부에서 클래스를 숨겨 클래스를 숨기는 것입니다.

package com.example {

   public class A {
      // ...
   }

}

class B {
   // ...
}

class C {
   // ...
}

나는 프로젝트 내의 모든 "가져 오기"지침을 분석하고 모든 외부 종속성을 이러한 종류의 숨겨진 개인 클래스로 옮길 수있는 작은 도구를 작성하는 것에 대해서도하더라도.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top