다양한 디자인 패턴을 익히기위한 나의 지속적인 모험에서 나는 "State"디자인 패턴을 만났다.내부 및/또는 부분 수업은 주립 디자인 패턴의 원칙을 벗어 납니까?
먼저이 패턴을 사용하려고하는 위치를 설명하겠습니다. 나는 상태를 신청하고자하는 양식을 가지고 있습니다. 내 프로그램에는 구성, 처리 및 ProcessingComplete의 세 가지 상태가 있습니다. 양식이 변경되면 양식의 다양한 구성 요소가 활성화/비활성화, 표시/숨김 등이됩니다.
상태 패턴을 이해하면 모든 변경 사항 (구성 요소 표시/숨김, 활성화/비활성화 등) 양식의 인스턴스를 포함하는 별도의 클래스 내에서 발생해야합니다. 다양한 State 클래스가 Form의 클래스와 별개 인 경우 State 클래스는 Form의 구성 요소에 액세스 할 수 없습니다. 나는이 두 가지 옵션 중 하나를 나에게 잎 느낌 :
내가 해당 옵션을 느끼는 국가 클래스를 양식의 내부 클래스를 확인 공공
내 선택이 부당한 것인지, 아니면 내가 생각조차하지 않은 또 다른 옵션이 있습니까?
나는이 아이디어가 정말 마음에 든다. 왜냐하면 나는 상당히 복잡한 생성자 (이 경우에는 많은 매개 변수를 의미하는 복잡한)를 구현해야한다는 것을 의미하는 내 클래스를 공정하게 불변으로 유지하는 데 익숙하기 때문에 나에게 발생하지 않았다. – Anthony
그러나 더 생각해보십시오 : "옵션 2는 귀하가 주어진 것을 행동 할 수 있도록 귀하의 주를 디자인 할 때 실제로 불필요하게됩니다". 옵션 2에서는 State 클래스에 Form의 인스턴스를 지정해야합니다. 이점은 State 클래스가 중첩되어 있으므로 State가 Form의 인스턴스의 private 멤버에 액세스 할 수 있다는 것입니다. – Anthony
@Shynthriir : 저는 한 클래스가 다른 클래스의 private 멤버에 액세스하는 것을별로 고려하지 않았습니다. 밀접하게 결합 된 코드입니다. 중첩 된 경우에도 볼 수있는 대상이 아닌 주어진 대상에만 액세스해야합니다. –