2012-12-09 2 views
3

추가 기능을 autocad 용으로 프로그래밍하고 있지만 디자인 문제가 있습니다. 나는 그것이 디자인 패턴에 의해 해결 될 수 있다고 생각합니다.그리기 응용 프로그램에 사용할 디자인 패턴

나는 테이블을 그리려고하는데 테이블에는 프레임과 윗면/표면이 2 개 있습니다. 그래서 나는이 3 종류가 있습니다

  • 그리기 :이 클래스는 사용자의 입력을 확인하고 삽입 지점을 요청 프레임과 표면을 생성하고 AutoCAD를 DB에 새 생성 된 인스턴스를 삽입합니다.
  • 프레임 : 길이와 깊이에 따라 프레임을 계산하십시오.
  • 표면 : 길이와 깊이에 따라 표면을 계산하십시오.

내 문제는 사용자가 지정한 길이 값이 최대 값보다 큰 경우 2 개 이상의 서페이스를 생성해야한다는 것입니다. 표면 클래스는 또한 첫 번째와 마지막면을 알아야합니다. Draw 클래스는 두 번째 서페이스를 배치하기 위해 첫 번째 끝 부분을 알아야합니다.

내가 지금 한 것은 calcNumberOfSurface (int len)라는 메서드를 Draw 클래스에 넣고이 메서드 내에서 매번 서페이스의 수를 반복하여 클래스 Surface의 새로운 인스턴스를 만듭니다. 이 솔루션에는 두 가지 문제점이 있습니다. Surface 클래스는 첫 번째인지 마지막인지 모릅니다. 제 1 표면의 종료 위치를 규정 할 수 없다. 이것을 Draw 클래스에 구현해야합니다.

이 문제를 해결하는 데 유용한 모범 사례가 있습니까?

+1

내 경험에 따르면 디자인 패턴을 사용하려는 프로젝트에 참여하면 복잡해지고 더 많은 시간을 소비하게됩니다. 일반적으로 나는 그것을 효율적으로 사용할 수있는 곳을 보게되면 디자인 패턴으로 리팩토링 할 것입니다. 여러 번 디자인 패턴은 당신이 반드시 그 접근 방식을 사용하는 이유가 필요하지 않은 것들을 많이 던질 것입니다. 그래서 나는 전구가 "이 패턴이 정말로 잘 맞을 것"을 클릭 할 때까지 기다렸다가 그렇지 않으면 사용하기가 더 복잡해집니다. 어쨌든, 그것은 단지 나의 선호입니다. 나는 다른 사람들이 아마 동의하지 않을 것이라고 확신합니다. – Preston

+0

"내 문제는 사용자가 제공 한 길이 값이 최대 값보다 큰 경우"입니다 - 최대 값은 얼마입니까? 나는 왜 당신이 여러 곡면을 만들어야하는지 알지 못한다. – rro

+0

@preston 어쩌면 당신 말이 맞을지 모르지만 DP가 필요한지를 확인하기에 충분한 경험이 없습니다. 제 아이디어는 여기에 물어 보면 누군가가 DP를 인식 할 수 있습니다. – user1890239

답변

3

나는 Preston에 동의합니다. 여기에서 디자인 패턴을 익히기 전에 먼저 필요한 모든 클래스와 각 클래스의 멤버에 대해 생각해야한다고 생각합니다. 귀하의 예를 들면 :

  • End position은 Surface 클래스의 멤버입니까?
  • List<Surface> (표면 목록)을 나타내는 또 다른 클래스 일 수 있습니다. 이 클래스에는 첫 번째 및 마지막 서페이스가 포함됩니다.
+0

@ user1890239 좋은 조언입니다. Draw 클래스는 Surface에 대한 세부 사항을 알 필요가 없습니다.사실, Surface는 스스로 그릴 수있는 디자인 일 수 있습니다 (IDrawable 클래스에서 파생/AbstractDrawObject에서 상속 및 Draw 메서드 구현). 프레임도 마찬가지입니다. – rro

관련 문제