Recorder
클래스가 있습니다. 그것은 장면, 오디오 및 음악을 녹음 할 수 있습니다. 녹음 과정의 정확한 세부 사항은 재미없는 - 예를 현장 녹화가 여러 인스턴스 변수를 필요로하고, API는 다음과 같습니다 위해 :상속을 사용하여 기능을 계층화 하시겠습니까?
- (void) startRecordingScene: (Scene*) scene;
- (void) stopRecordingCurrentScene;
같은 오디오와 음악에 간다. 제가 수업에 관해 싫어하는 점은 실제로 녹음 장면, 오디오 및 음악을위한 세 가지 수업이라는 것입니다. 수업을 나누고 싶지만 어떻게할지는 모르겠다. 이것은 Objective-C이므로 카테고리를 사용할 수는 있지만 새로운 인스턴스 변수를 추가 할 수는 없습니다.
상속을 사용하여 기능을 레이어하는 방법에 대해 어떻게 생각합니까? SceneRecorder
, AudioRecorder
및 MusicRecorder
과 같으며 각각 앞의 것과 상속합니다. 이것은 상속을 오용하는 것처럼 느껴집니다. 세 가지가 관련되어 있지만 실제로는 AudioRecorder
이 SceneRecorder
이라고 말할 수는 없습니다. 나는 그들에게 AudioRecorder
, AudioAndSceneRecorder
등이라고 부를 수는 있지만 엉망이다.
구성은 어떻습니까? 세 가지 구성 요소 모두 녹음 자체 또는 마지막 녹음 이벤트에 대한 정보와 같은 일부 데이터를 공유해야합니다. 그래서 구성도 법안에 맞지 않는 것 같습니다.
그런 디자인에 대해 어떻게 생각하세요?
답변 해 주셔서 감사합니다. 디자인 문제를 논의 할 때의 문제점은 토론을 가로 지르지 않고 올바른 정보를 고를 수없는 것입니다. 음악, 오디오 및 장면 대신 A, B 및 C와는 전혀 관련이없는 그림을 그릴 수 있습니다. – zoul
완전히 관련이 없지만 레코더가 많은 동작을 공유하면 Recorder 클래스의 개별 하위 클래스 여야합니다. 클래스 클러스터가되기를 원하거나 스스로를 인스턴스화해서는 안되는 "추상적 인"Recorder 클래스를 드러내고 자한다면 당신의 결정입니다. 나는 클래스 클러스터를 선호한다. –