숫자 문제를 해결하는 주 수업이있는 곳에 문제가 있습니다. 단순화를 위해 Ax=b
을 해결한다고 가정합니다. 이제는 사용자가 해결 방법을 선택할 수있는 권한을 부여하겠습니다. 수천 가지 옵션이 있으며 각 옵션에는 수천 가지 옵션이 있습니다.중첩 클래스 - 좋은 디자인?
내 생각은 메인 클래스를 만든 다음 각 메소드에 대한 하위 클래스를 만들고 하위 클래스로 각 메소드 (상속을 통해 상호 작용할 수 있음)를 하위 서브 클래스로 만듭니다.
는 예를 들어, 나는 사용자가 다음 Model.method='CG'
Model.preconditioning=off
및 Model.Solve
로 삼았 무언가를하고 Model
클래스에서, 실행 CG
서브 클래스가 직시. CG
내에는 전처리가 켜지거나 꺼지는 방법에 따라 실행되는 방법 CG_Precond
및 CG_NoPrecond
이 있습니다. (이 방법은 크게 다르다고 가정). 따라서 본질적으로 사용자는 Model.CG.CG_NoPrecond
을 실행 중입니다.
좋은 디자인인가요? 중첩 클래스는 피해야합니까?
중요한 점은 Model
클래스 이외의 모든 하위 클래스에는 메서드 만 포함되며 반환되는 것 이외의 자체 데이터는없는 것입니다.
나는 정말 좋은 답변을 몇 시간 동안 보냈고 나의 문제는 받아 들여지는 대답의 요구 사항과 맞 춥니 다 (Why/when should you use nested classes in .net? Or shouldn't you?).
Strategy (http://sourcemaking.com/design_patterns/strategy) 디자인 패턴이 필요한 것처럼 보입니다. – LordDoskias
클래스에 'ModelSettings'구조체에 필요한 정보를 제공하는 것이 더 쉬울 수도 있습니까? – Tharwen
그래서 문제를 해결할 수있는 방법의 트리가 있습니다. 나무에는 수천 개의 가지가 있으며 깊이는 3입니다. 어떻게 든 나무를 생성해야 할 것입니다. 중첩 된 클래스가 당신이 언급 한 다른 방법보다 훨씬 읽기 쉬울 것 같습니다. – Dru