2011-09-26 1 views
2

인터페이스가 있습니다2 개의 엔티티에 대한 조작 - 어떻게 그리고 어디서 설계 할 것인가?

interface Male { 
    boolean likes(Female female); 
} 

interface Female { 
    boolean likes(Male male); 
} 

있다 또한 인터페이스

interface GoodCouple { 
    Male getMale(); 
    Female getFemale(); 
} 

당신은 2 개 세트를 제공하고 있습니다 :

Iterable<Male> males = ...; 
Iterable<Female> females = ...; 

그리고 당신은 GoodCouple s의 세트를 구축하도록 요청 :

Iterable<GoodCouple> couples = XXXXXXXXXXXX(males, females); 

질문은, 어떻게 XXXXXXXXXXXX를 정의하겠습니까? 알고리즘에 관한 것이 아니라 아키텍처에 관한 것입니다 : XXXXXXXXXXXX은 무엇입니까? 그것은 어떤 계급의 방법입니까? 그 반원에게 어떤 이름을 주겠습니까? 이 수업의 책임은 무엇입니까?

중요한 경우 언어는 C# 또는 Java입니다.

+0

전화 것? – Thomas

+6

오프 주제 : IMO, 디자인이 너무 보수적입니다 :) –

+1

@Bala R - Hahahaha, 내 하루 만들었습니다 :) –

답변

0

IT는 GoodCoupleFactory의 일부가 될 수 있습니다 내가 XXXXXXXXXXXX 같은 방법을 둘 것입니다 및 다른 모든 방법이 직접 MaleFemaleUtils 또는 GoodCoupleUtils 같은 클래스 중 하나 Male 또는 Female에 속하지 않는 CreateGoodCouples(males, females)

1
class GoodCoupleDetectorImpl : GoodCoupleDetector { 
    public Iterable<GoodCouple> findGoodCouples(Iterable<Male> males, Iterable<Female> females) { } 
} 

이렇게하면 좋은 커플을 찾을 때 다른 전략을 사용할 수 있습니다.

0

예, 클래스의 메소드가 될 수 있습니다. 나는 그것을 MatchMaker과 아이디어는 당신이 * 있습니까 * 당사 방법 FindMatches :

0

C# Linq Zip

IEnumerable<Male> males = ...; 
IEnumerable<Female> females = ...; 
IEnumerable<GoodCouples> couples = males.Zip(female, (male, female) => new GoodCouple { male = male, female = female }); 
+2

그것은 모든 남성과 여성을 GoodCouples에 압축하는 것이 아닙니다. 그것은 호환 가능한 남성과 여성으로부터 GoodCouple 인스턴스를 만드는 것에 관한 것입니다. 인터페이스의'likes()'메소드는 어떻게 든 관련되어야한다고 생각합니다. –

관련 문제