2010-01-04 2 views
0

개인 및 공개 메서드가있는 DataMapper 클래스가 있습니다. DataMapper 클래스 자체는 자동 생성 코드이기 때문에 시스템 계층에 있습니다. 사용자 (개발자)는 도메인 계층 (또는 비즈니스 논리 계층)에서 DataMapper 클래스를 사용합니다.두 레이어를 통해 메서드의 가시성을 분리하는 방법은 무엇입니까?

DataMapper에는 프레임 워크에서만 사용되며 사용자에게 표시하고 싶지 않은 메서드가 있습니다. 그러나 프레임 워크 클래스가 이러한 메서드를 호출 할 수 있어야하므로 이러한 메서드를 비공개 또는 보호 할 수 없습니다. 그러나 사용자는해서는 안됩니다.

1)은 "개인 API"의 표시하기 위해, 메소드 이름의 앞에서 _ 밑줄을 추가 : 내가 생각

하나 개의 옵션이었다.

2) 메서드에 "key"라는 매개 변수를 추가합니다. 전체 프레임 워크는 이러한 메서드를 전달하는 비밀 키를 알고 있습니다. 메서드는 키를 평가합니다. 괜찮 으면 메서드가 실행되고, 그렇지 않으면 예외가 throw됩니다.

내 레이어에서 이러한 메소드의 가시성을 어떻게 분리 할 수 ​​있습니까? 인터페이스를 봐야합니까?

답변

1

예 ... 공개 메소드 용 인터페이스는이 문제를 처리하는 "고전적인"방법입니다.

1

"사용자"가 악의적 인 의도를 가질 것으로 예상되거나 재난의 가능성이있는 경우 (즉, 다른 사용자가 실수를 저지르는 경우) 사용자가 내부 방법을 고치려고하면 실제로는 그렇지 않습니다. "암호"논쟁을 사용하여 성가시다 - 그것은 근원에서 어쨌든 쉽게 추론 될 수 있었다. 이 시나리오 중 하나가 발생하는 것을 상상할 수 없습니다.

외부 클라이언트 코드에 필요한 기능을 제공하기 위해 일종의 래퍼를 사용할 수 없습니까?

관련 문제