비공개 형식을 반환하는 팩터 리 메서드가 거의없고이 비공개 형식의 변수를 제공하는 메서드 집합을 페어링하면 어떻게됩니까? NetBeans에서 제목이 표시된 경고 메시지가 나타납니다.공용 API를 통해 비공개 형식 내보내기
결과 공개 API에는 두 가지 쌍의 메소드 쌍만 포함됩니다. 그 이유는 내 유형 계층을 봉인 (스칼라에서 seald 클래스처럼)하고 사용자가 팩토리 메소드를 통해 이러한 유형을 인스턴스화 만하도록 허용하기 위해서입니다. 그래서 우리는 어떤면에서 DSL을 얻습니다.
예를 들어, 일정 필드의 컨트랙트로 표시된 Schedule 클래스. RangeSet, Singleton, List, FullSet과 같은 NumberSet 인터페이스를 루트로하는 몇 가지 유형의 제한이 있습니다. 우리는 이러한 유형을 공개하고 Schedule이 어떻게 상호 작용하는지 공개하지 않습니다. 우리는 단지 사용자의 명세를 원할뿐입니다. 그래서 우리는 NumberSet을 private 패키지로 만듭니다.
NumberSet singleton(int value);
NumberSet range(int form, int to);
NumberSet list(NumberSet ... components);
및 생성 일정 개체에 대한 몇 가지 방법 :
이Schedule everyHour(NumberSet minutes);
Schedule everyDay(NumberSet minutes, NumberSet hours);
사용자는 방식으로 사용할 수 있습니다 :
Schedule s = Schedule.everyDay(singleton(0), list(range(10-15), singleton(8)));
을 수업 일정에서 우리는 몇 가지 제약 공장 방법을 만들 수 나쁜 생각인가요?
루트 유형을 package-private로 설정하면 왜 작동하지 않습니까? –
예.하지만이 유형을 보지 못하는 클라이언트입니다. 팩토리 메소드를 통해 스펙을 지정하고 스케쥴 오브젝트의 팩토리 메소드를 전달하면됩니다. –