아래의 유사 코드와 비슷한 작업을 수행하려고합니다. 중첩 된 클래스를 사용하기위한 규칙이나 모범 사례에 위배 되는가?외부 클래스 내에서 여러 목록을 보유하는 정적 중첩 캐쉬
public class Foo{
private list1, list2;
Bar bar = new Bar(list1, list2);
// use bar.listA, bar.listB, bar.listC,
//bar.listD, bar.listE
private static class Bar{
private list1, list2;
private listA, listB, listC, listD, listE;
private Bar(list1, list2) {
this.list1 = list1;
this.list2 = list2;
//logic to split list1 and list2 into 5 lists: listA, listB, listC, listD, listE.
//initialize the 5 lists
}
}
}
나는 논리적으로 하나 개의 장소에서 사용되는 클래스를 그룹화하는 방법은 오라클에 의해 언급 된 이유로 중첩 된 클래스를
- 그것이 사용하고
- 더 읽기 쉽고 유지할 수있는 코드
- 그리고 이유 mentioned here
외부 클래스 멤버에 직접 액세스 할 필요가 없기 때문에 중첩 클래스를 정적으로 만들고 있습니다.
편집 : 더 구체적으로하기 위해 내 마음 속에 몇 가지 질문이 있습니다. 중첩 된 클래스 대신 ENUM을 사용해야합니까? 중첩 클래스의 5 목록에 getters/setter를 사용해야합니까? 중첩 된 클래스의 생성자가 분할 논리를 넣을 올바른 위치입니까? 중첩 클래스의 private 멤버를 외부 클래스에서 직접 참조 할 수 있습니까?
그런 추상적 인 디자인에 대해서는 추론하기가 어렵습니다. 현실 세계의 어떤 문제를 해결하려고하십니까? – plalx
2 개의 목록이 바깥 쪽 인스턴스로 전달되면, 난 단지 5 개의 목록으로 나누고 바깥 쪽 인스턴스에서만 핸들을 사용하는 우아한 방법이 필요합니다. 그것의 단지 데이터 변환 프로세스. – Gadam
그저 그렇다면 외부 클래스에서 기능적 솔루션을 구현할 것이고 중첩 클래스 나 OO 디자인 형태로 신경 쓰지 않을 것입니다. 그러한 목록에 대해 특별한 행동을 취하지 않는 한 그렇습니다. 분할 논리는 어떻게 사용되며, 어떻게 사용됩니까? 일부 동작은 일부 목록에만 적용됩니까? – plalx