문제

나는 데스크톱 응용 프로그램에서는 파이썬 및 보핑에 대한 몇 가지 제한 사항의 파일을 조직입니다.지금까지 나는 구조화된 내 이 프로젝트 방법:

  • application.py -보유 기본 클래스는 응용 프로그램(대부분의 기능적인 루틴)
  • gui.py -보유하고 느슨하게 결합한 gui 프로그램의 구현입니다.신호 처리 콜백,etc.
  • command.py -보유하고 명령 라인 자동화 기능에 의존하지 않는 데이터를 응용 프로그램에서 클래스
  • state.py -보유합 상태 데이터를 지 속성 클래스

이것은 제 상당히 잘 지금까지,그러나 이 시점에서 application.py 을 얻습니다나는 수많은 다른 PyGTK 응용 프로그램 및 그들은 유사한 구조적인 문제입니다.특정 시점에서 기본 모듈을 얻을 시작하는 매우 긴 거기에 명확하지 않을 파괴하는 방법 코드로 좁은 모듈을 희생하지 않고 선명도체 방향입니다.

내가 만드는 것으로 간주는 GUI 기본 모듈과는 별도로 모듈을 위한 도구 모음 루틴 메뉴 루틴 등이지만,그 시점에서 내가 믿고 잃을 것이 이득의 대부분의 객체 지향 프로그래밍과 함께 모든 것을 참조-모든 시나리오이다.

그와 거래하는 데 매우 긴 중앙 모듈 또는 더 좋은 방법이 있을 구성하는 프로젝트도록 의존하지 않아도 클래스에는 브라우저에게는 많은?

내 편집

Ok,점은 촬영에 관한 모든 MVC 물건입니다.나는 거친 근사의 MVC 내 코드,그러나 틀림없이 나는 아마 어떤 이득 마일리지에 의해 추가 segregating 모델 컨트롤러입니다.그러나 나는 독서 이상 python-gtkmvc 의 설명서(는 훌륭한 방법으로,당신을 감사에 대한 참조)에는 해당하지 않을 내 문제를 해결하기 위해 그렇게 많으로 공식화하다.내 응용 프로그램에는 하나의 글레이드 파일의,일반적으로 단일 창입니다.그래서 아무리 단단하게 정의 MVC 의 역할 모듈을 나는 아직도 가야 하나 컨트롤러 모듈을하고 대부분의 모든 것은 꽤 많은 것을 내가 지금입니다.틀림없이 나는 작은 퍼지에 적절한 MVC 구현 및가를 연구하고,그러나지 않는 백성아 나를 앙망하라 그리하면 다음과 같이 건축물을 얻을 것입니다 더 이상 재료의 내 주요 파일을 파일이름을하 controller.py.

나는 생각에 대한 별도 컨트롤러/보기 쌍에 대한 별도 섹션의 창(도구 모음에서 메뉴,etc.)?아마도 그것은 내가 누락 여기에.그것은 이것이 무엇 S.로트가 참조하면서 자신의 두 번째 bullet point.

답변 주셔서 감사합니다.

도움이 되었습니까?

해결책

프로젝트 물속을 걸어서 건너는 사람 우리가 사용하는 python gtkmvc, 는 훨씬 쉽게 적용 MVC 패턴을 때 사용하는 파이썬와 더불어,당신은 파일을 볼 수 있습니다 조직의 프로젝트 svn 저장소:

wader/
  cli/
  common/
  contrib/
  gtk/
    controllers/
    models/
    views/
  test/
  utils/

다른 팁

이는 가능성과 함께 할 수 없 PyGTK 지만,오히려 일반적인 코드 조직 문제입니다.당신은 아마에서 혜택을 적용하는 일부 MVC(요한 모든 기능이 컨트롤러)의 디자인 패턴이 있습니다.보 디자인 패턴, 예를 들어,.

"보유하고 기본 클래스는 응용 프로그램(대부분의 기능적인 루틴)"

에서와 같이 단수-한류?

난 놀라지 않는 하나를 추가할 수 있습니다.모든 것 디자인 작동하지 않습니다.되지 않을 수도 있습니다시 객체-지향합니다.그것처럼 들리지 않는데 그것이 다음과 같은 일반적인 MVC 디자인 패턴을 경우 기능은 말뚝에서 하나의 클래스입니다.

이 대규모 클래스?나는 제안할 수 있는 아마 리팩터링이 있습니다.두 후보에 대한 차원 refactoring 응용 프로그램 등--는 경우,참으로,나는 바로 짐작을 넣었으로 모든 것을 하나의 클래스입니다.

  1. 아무것도 다른 일을 하기 전에,리팩터링으로 구성 요소를 병렬로 실제 세계 Entities.그것이 무엇인지 명확하지 않에"state.py"--어떠했는지 이것은 적당 모델의 실체,또는 그 사이의 매핑을 영구 저장소 어떤 어두운 데이터 구조에서의 응용 프로그램.가장 가능성이 이동할 처리에의 응용 프로그램으로 모델(가능성 state.py 가능성이 새로운 모듈이 적절한 모델입니다.)

    휴식으로 모델을 조각합니다.그것은 구성하는 데 도움이 되도록 제어 및 보 요소입니다.가장 일반적인 MVC 실수를 너무 많이 넣어 아무것도에서 모델이다.

  2. 나중에,당신의 모델로 하고 있는 대부분의 작업에서 볼 수 있습 리팩터링으로 구성 요소를 평행한 GUI 프리젠 테이션입니다.다양한 최고 수준의 프레임,예를 들어,아 별도의 cotrol 개체입니다.그것이 무엇인지 명확하지 않의에서"GUI.py"--이 될 수 있는 적절한 보기입니다.나타나는 것이 없어 구성 요소입니다.

죄송하여 응답 너무 늦었습니다. Kiwi 나게 보다 훨씬 더 나은 솔루션보다 gtkmvc.그것은 나의 첫 번째 종속성을 위해 모든 pygtk 프로젝트입니다.

Python2.6 지원 명시적인 수입 상대, 는 패키지를 사용하여 더욱 쉽게 이전 버전보다.나는 당신이 볼로의 응용 프로그램은 작은 내부 모듈을 이용하는 것이 좋다.구성할 수 있습니다 이런 응용 프로그램:

myapp/
  application/
  gui/
  command/
  state/

각 디렉토리는 자신의 __init__.py.당신이 볼 수있에서 python 응용 프로그램 또는 표준 라이브러리에서 모듈에 대한 예입니다.

그래서 듣지 못한 내 편집하는 원래의 질문을 했을 좀 더 연구하고 결론 내가 오는 것 같은 , 다,나는 휴식의 인터페이스로 여러 가지 전망을,각각 자신의 컨트롤러입니다.Python-gtkmvc 는 기능을 제공하여 이 제공하는 glade_top_widget_name 매개 변수를 보 생성자입니다.이 모든 것을 만들의 좋은 거래를 감각 있지만 그것을 요구하는 것입니다 큰토 내에 기존 codebase 는 나가지 않을 수도 있습 기꺼이 수행하에서 가까운 장기간(I know,I know,I .) 또한,나는 좌하지 궁금해 하나의 모델체(내 응용 프로그램은 매우 간단하다--no more than twenty-five 상태 vars)는 경우 또는 내가 그것으로 다양한 모델 및 거래 컨트롤러와의 관찰을 여러 모델과 연결 알림하는 것입니다.(다시 나 정말 해주시면 감사하겠습니다.) 사람이 어떤가있는 경우 추가적인 통찰력,나는 아직도 정말 하지 않는 것 같은 느낌을 얻었는 원래의 질문에 대답하지만,나는 방향으로 머리에 지금이다.

(또한 것처럼 해야하는 다른 선택 건축에서 손으로,주어진 지금까지 본 적이 없었는 단일 Python 응용 프로그램 코드에 MVC 스타일이지만,그런 다음 다시 많은 Python 응용 프로그램을 가지고 있는 경향이 있습니다 정확한 문제는 내가 위의 설명되어 있습니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top