가끔 바나나의 인스턴스를 획득해야하는 원숭이 클래스가 있다고 가정합니다. 이 바나나가 제공되는 방식은 원숭이에게는 중요하지 않지만 바나나 획득을 시작합니다.이벤트, 위임 또는 인터페이스?
이제 적어도 내 원숭이를 바나나 제공 업체로 연결하는 3 가지 방법이 있습니다. 가장 좋은 방법은 무엇입니까?
1. 이벤트
는 Monkey.BananaNeeded
이벤트를 올립니다. 이벤트 처리기는 BananaNeededEventArgs.Banana
속성을 설정합니다.
2. 인터페이스
호출 IBananaProvider.GetBanana
. IBananaProvider
인스턴스는 생성자 인수 또는 속성을 통해 원숭이에 주입됩니다.
3. 위임 형 System.Func<Banana>
의 대리자를 호출합니다. 대리자는 생성자 인수 또는 속성을 통해 원숭이에 주입됩니다. 이것은 여분의 인터페이스 나 클래스의 선언을 요구하지 않기 때문에 유혹스러운 일이지만 분명히 대중적인 선택은 아닙니다.
+1 재미있는 예제와 괜찮은 질문이지만, 물론 원숭이는 바나나를 얻지 않는다고 생각합니다. 맛있는 음식을 먹고 싶습니다. –
뚱뚱한 원숭이 : while (true) _provider.GetBanana.Eat(); – Guffa
바나나 스킨을 버리는 것을 잊지 마십시오. 우리는 바나나 피부가 우리 손에 새는 것을 원하지 않습니다. –