2011-03-03 2 views
2

나는 사람 클래스가 있고 그 다음에 클래스가있다.Java의 한 함수에 대해 별도의 서비스 클래스를 만들어야합니까?

Countries 
Languages 

나는 국가와 langauages를위한 별도의 클래스가있다. 나는 모든 결정을 드롭 다운과 모든 언어로 표시해야합니다. 그렇다면 CountryService 클래스와 languagaeService 클래스를 만들어야합니까? 거기에 getLanguages와 getCountries와 같은 함수가 있습니까?

좋은 해결책을 찾고 있습니다.

답변

2

이 답변은이 코드베이스에 예상되는 성장 경로에 따라 다릅니다.

언급 한 기능 외에도 CountryService 또는 LanguageService 클래스에 추가되는 내용이 많이없는 경우 2 개의 새로운 클래스를 추가하면 솔루션이 과도하게 엔지니어링 될 수 있습니다. 이 경우 당신이 역할과 기능 CountryService을 확장 자기가 표시되면 Country 클래스

에 정적 메서드Language 클래스에 getLanguagesgetCountries를 추가 의 라인을 따라 더 뭔가를 더 할 수 있고, LanguageService 클래스를 사용하면이 접근 방식이 좋습니다.

1

해결책은 잘못은 아니지만 일반적으로 getAvailableCountries()getAvailableLanguages()과 같은 메서드는 해당 클래스에서 정적 메서드로 선언됩니다. 그런 식으로, 당신은 다음과 같이 사용할 수 있습니다 :

List<Country> lc = Country.getAvailableCountries(); 
List<Language> ll = Language.getAvailableLanguages(); 

당신은 데이터베이스에서 이러한 개체를 저장하고 있습니까? 이 경우, 나는 다음과 같은 디자인 중 하나를 사용합니다 :

  • 개체 자체를 저장하는 책임이있다 :

    new Country("United States").save(); 
    new Language("English").save(); 
    
  • 클래스는 객체 저장에 대한 책임 :

    Country.save(new Country("United States")); 
    Language.save(new Language("English")); 
    
+0

그래서 모든 정적 메소드가 각 클래스에 있어야 함을 의미합니다. conutry 추가, 국가 기능 삭제 –

+0

기본적으로 네, 국가 기능을 보유하는 기능 만 가진 'CountryService' 클래스는 필요하지 않습니다. 'Country' 클래스에 추가하는 것은 완벽한 의미를 갖습니다. 왜냐하면 그것이 국가에서 작동하는 메소드를 검색하는 첫 번째 장소이기 때문입니다. –

+0

가능한 추가/삭제/수정 API 디자인으로 내 대답을 업데이트했습니다. –

관련 문제