2008-09-17 7 views
0

원래 VB6로 작성된 응용 프로그램을 유지 관리해야했습니다. 그 이후 VB .NET으로 가져 왔고 코드가 객체 지향이 아닌 것입니다. 이 코드는 공용 공유 속성 (변수)과 메소드 (함수) 이상의 것을 포함하는 클래스로 가득 차 있습니다.이 결과로 애플리케이션이 한 번에 둘 이상의 프로젝트를 열지 못하도록 제한합니다.개체 지향 업데이트 접근 방식

프로젝트는 일반적인 프로젝트 설정뿐만 아니라 다른 프로젝트 관련 데이터가 들어있는 Access 데이터베이스의 위치를 ​​포함하는 XML 파일로 구성됩니다. 수년에 걸쳐 XML 파일의 형식이 수정되었으며 업데이트 및 버전 관리 전략이 채택되었습니다. 선택한 전략은 이전 버전이 발생할 때마다 열 때 업데이트를 수행합니다. 지금까지 XML 파일 내의 데이터를 재배치하거나 데이터베이스 스키마를 변경하고 XML 파일의 데이터를 데이터베이스로 옮기는 작업 만 업데이트되었습니다.

OOP에서 꽤 많은 배경 지식이 있으면 프로젝트가 다른 객체와 상호 작용하는 자체 포함 된 객체 여야한다는 것을 쉽게 알 수 있습니다. 그러나 OOP에서 선택한 업데이트 전략을 적용하는 방법을 알지 못합니다.

OOP에서 선택한 업데이트 전략을 구현하는 문제로 인해 OOP를 아직 사용하지 못하게되었습니다. 누구든지 그러한 작업에 대한 경험이 있거나 진행 방법에 대한 권장 사항이 있으면 제공 할 수있는 도움에 감사드립니다.

답변

1

XML 파일을 읽는 클래스를 빌드하고 해당 파일의 데이터를 기반으로 속성/메소드/etc를 제공합니다. 클래스가 XML 파일을 다시 작성하면 새 버전에 필요한 방식으로 형식을 지정하십시오.

기본적으로 클래스는 현재 버전과 모든 이전 버전을 읽을 수 있지만 항상 새 버전을 작성합니다.

데이터는 필요할 때마다 XML 파일을 스캔하지 않고 클래스의 내부 변수에 보관됩니다.

XML 파일에 VERSION 노드를 추가하면이 경우에도 도움이됩니다.

+0

나는 이것이 현재 가장 좋은 해결책 일 것이라고 동의하지만 공개 전략에 대한 업데이트를 저장 전략에 대한 업데이트를 위해 버립니다. 현재는 save에 대한 업데이트가 작동하지만 더 많은 데이터베이스 기반 솔루션으로 이동하면 대부분 충분하지 않을 것입니다. –

0

전략 (Strategy Design Pattern)이라는 단어를 사용할 때 자신의 질문에 대한 답변을했을 수도 있습니다.

은 아마도 당신은 할 수 :

  • 전환에 대해 아무것도 알고 있지만 전략 객체를 받아들이는 프로젝트의 클래스를 만듭니다.
  • 가능한 각 변환 전략을 모델링 할 클래스 계층을 만듭니다.
  • 는 올바른 전략
0

이 골치 아픈 문제가 왜 이해가 안와 프로젝트 객체를 구축하는 공장 방법을 사용합니다. 그것은 여러 가지 방법으로 해결 될 수 있습니다. 당신이 진정한 기업용 타입 일 중심의 전체 개체를 수행 할 경우

, 당신은 다음과 같은 솔루션의 일부를 취할 수 :

  • 다른 객체 프로젝트와 을 상호 작용하는 방법을 설명 인터페이스 IProject를 만듭니다.
  • 의 현재 구현 만들기 IProject 을 구현하고 현재 버전을 읽고 쓸 수있는 프로젝트를 만듭니다. 의 버전을 감지하는 ProjectFactory을
  • 는 XML을 무시하고 각각의 과거 버전에 대한 프로젝트를 확장 및 데이터베이스는 방법을 읽고 이러한 클래스가 추가 enterpriseyness를 들어
  • 인스턴스화있을 때 생성자 호출 기록을 가진 작성 해당 파일을 올바른 버전으로 다시 설정하십시오.
  • 추가 버전이 필요한 경우가 읽은 다음 쓰기를 호출 모두와 함께 프로젝트 의 새 버전을 액세스하는 과거의 프로젝트로 같은 일, 을 할 수있는 현재의 프로젝트를 다시 .

이 솔루션의 장점은 다른 버전으로 계속해서 돌아 다니며 새로운 버전마다 이전 버전에서 업데이트 할 수 있어야하며 모든 이전 버전은 두 번째 버전에서 마지막 버전으로 계단식 연결해야한다는 것입니다 .

관련 문제