쉬운 대답은 stop() 메소드가 포함 된 모든 일반 작업과의 인터페이스를 갖는 것입니다.클라이언트가 아닌 중지 할 수있는 서비스를 어떻게 중지해야합니까?
interface Service {
operation(parameters ...);
somethingElse(parameters ...);
stop();
}
정지 방법의 주요 문제는 서비스에 대한 참조를 가져 대부분의 클라이언트는 아마 또한 서비스를 중지 할 수 없도록해야합니다.
또 다른 대안은 단순히 두 개의 인터페이스, 서비스 및 Stoppable
구현이 다음 정지 방법은 숨겨져있다, 다른 서비스에 의해 포장되는 경우이 방법의 유일한 문제는interface Service {
operation(parameters ...);
somethingElse(parameters ...);
}
interface Stoppable {
void stop();
}
을 정의하는 것입니다.
"중지"에서 클라이언트를 중지의 원래 문제는 서비스가 여전히 가능, 그들은 단지 참조 Stoppable의 인스턴스 인 경우 먼저 확인해야하고 그들은 그것을 "중지"할 수 있습니다.
이 문제를 해결할 방법?
내가 사용할 수있는 공공 정지를 떠나지 않고 (물론 나를 위해) 우아하게 문제를 해결 아이디어를 가지고있다. 그러나 나는 그것을 보여주기 전에 몇 가지 아이디어를 원합니다.
나는이 문제에 대한 당신의 우아한 해결책을 궁금 해요. – Falanwe