2008-10-09 3 views
1

좋아요, ID3v2.4 에서처럼 음악 파일을 태그하는 작은 프로그램이 있습니다. 이제는 사용자가 원하는 경우 태그가있는 파일을 이동하거나 이름을 바꿀 수있는 옵션이 필요합니다.파일을 이동 시키거나 이동하는 클래스를 작성해야합니까?

이 시스템에서 상당히 깨끗하고 느슨하게 결합 된 디자인을 유지하려고한다는 것을 고려하면 (여기서는 확장 성이 그다지 중요하지 않지만, 그냥 재미 있습니다) someFileInfoObject.Move(someWhere)이라고 말하면 someWhere이 적용된 패턴이거나 아니면 어쩌면 MoveFileStrategy, RenameFileStrategy (일부 시스템에서는 이동/이름 바꾸기가 동일하게 간주 될 수 있지만 별도로 사용 가능하게 설정하는 것이 좋습니다.) - 대상을 파악하고 전략을 적용해야하는지 여부를 결정할 때 Apply(FileInfo file) 메소드가 호출됩니다.

일부 전략 수업이 유용 할 것으로 생각되면 좋은 구현 전략에 대한 제안 사항이 있습니까?

이미 말했듯이 오버 엔지니어링은 실제로 프로그래밍과 엔지니어링 연습을 목표로하는 재미있는 프로젝트이기 때문에 여기서는 문제가되지 않습니다. :)

답변

2

, S. 로트 @에 건물에서 빌려 자체는 간단하고 원자 명령을 유지하고, 명령 대기열을 만들 수 있습니다. UI는 대기열에 명령을 추가하고 프로그램은 명령을 순차적으로 실행합니다.

또한 실행 된 명령 (memento 's)을 걸어 놓고 실행 취소 기능을 제공 할 수 있습니다.

2

파일에 대해 거의 무제한의 명령이있는 경우를 만들 수 있습니다. 이 클래스 계층 구조를 생각해보십시오.

Command 
    CopyCommand 
    RenameCommand 
    MoveCommand 
    DiffCommand 
    CompressCommand 

이들은 실제로 전략이 아닙니다. 그것들은 간단한 "execute"메소드를 가진 평범한 클래스 일뿐입니다. 일반 설정자를 통해 옵션과 인수를 제공합니다. 그런 다음 메서드를 실행합니다.

이 연결 할 수 있습니다 작업에 대한 개미의 디자인 패턴. 내 머리 위로 떨어져

관련 문제