나는 DownloadManager
의 디자인을해야하지만 내 주요 질문은 어떻게 든 DownloadManager
이를받을 수있는 Download
등 진행률 표시 줄, onError()
, onFinish()
를 업데이트 할 onUpdate()
같은 DownloadManager
에게 보낼 수있는 알림 관련이있다 Download
에서 알림.옵저버 패턴 또는 콜백?
- 옵저버 패턴
- 콜백
옵저버 패턴
기본적으로 1 관찰 가능한 및 N 관찰자가 :
나는 두 가지 방법을 생각했습니다. 필자의 경우 DownloadManager는 Observer가되고 Observables는 다운로드됩니다. 따라서 N Observables 1 Observer라는 관계가 있습니다.
장점은 가능한 한 모든 알림을 Observers의 notify()
또는 update()
(java의) 메소드에 집중시키는 것입니다. 제 경우에는 DownloadManager 만 있습니다. 알림 코드를 사용하여 notify() 메서드에 매개 변수를 전달할 수 있습니다.
단점? 나는 콜백으로 쉽게 할 수있는 일에 oop 패턴을 사용하고있다. 또한, N observables 1 observer 그것은 1 명의 관찰 가능한 N 관찰자에 대해 수행 되었기 때문에 적어도 관찰자 패턴과 관련하여 이상한 것입니다. 따라서 실제로 관찰자 패턴을 사용하지 않을 것입니다.
관찰자 패턴과 매우 유사
콜백. DownloadManager는 "리스너"(인터페이스)를 구현합니다. 이 리스너는 onFinish(), onUpdate() 등의 알림 함수를 구현합니다. 그런 다음이 리스너는 모든 다운로드에 등록되어야하므로 다운로드가 완료되면 listener.onFinish()
이 호출됩니다. 또한 관측자 패턴처럼 다운로드에서이 메서드에 매개 변수를 전달할 수 있습니다.
장점 : 쉽게 사용할 수 있습니다. 단점 : 없음.
내 의견으로는 1 명의 관찰자 N 관찰자에 대해 관찰자 패턴을 사용하는 것이 바람직하지 않기 때문에 아마 콜백을 사용할 것입니다.
그리고 어떤 옵션을 사용할 수 있습니까?
"콜백 : 장점 : 쉽게 사용할 수 있습니다. 단점 : 없음" 나는 네가 네 답을 찾은 것 같아. –
콜백을 사용하는 한 가지 단점은 프로그램의 결합을 증가 시킨다는 것입니다 (일반적으로 새로운 매개 변수를 사용하는 모든 함수에 새 매개 변수가 추가됨). – synack
다른 상태 변경 업데이트의 편의를 위해 Observer 디자인 패턴을 여러 번 (오버로드 된 것과 비슷한) 업데이트 (Observable o, Object arg) 메서드로 여기에서 다시 설명했던 콜백이라고 생각합니다. –