2010-12-31 4 views
1

나는 name 필드와 getName() 필드를 포함하는 클래스 (예 : Customer)
이 있습니다. 이 순간에
, 그들은 단지 영어 이름
을하지만 어떤 새로운 언어를 사용할 수있는 (예를 들어 프랑스어 이름)이있는 경우 준비해야미래의 유사한 잠재적 인 데이터를 어떻게 준비 할 수 있습니까?

그것은 내가 사용해야하는 것 같다 Decorator 패턴
하지만, "더 많은 책임을 추가"하는 패턴을 사용하지 않습니다.

해시 테이블을 추가해야하나요? 더 좋은 해결책이 있습니까?

+4

여러 개의 이름 (예 : 프랑스어 이름, 영어 이름)을 사용한다는 의미입니까? 또는 이름이 다른 인코딩을 지원한다는 의미입니까? –

답변

1

가 여러 이름이있는 경우, 다음의 HashMap 합리적인 솔루션

public String getName(String lang) { 
    return names.get(lang) 
} 

(오류가 생략 검사)

고객이 여러 이름 표현이 있다면, 다른 기업도 할 수있다, 당신에게 것 시스템 전반에 걸쳐 사용될 기능을 추출해야합니다.

0

언어에 관계없이 사람들이 과 상관없이 일치하지 않습니까? 때로는 으로 발음되고 다른 언어 사용자가 다르게 쓰며 다른 스크립트로 작성되는 경우가 있습니다. 고객, 이름, 발음에작성-표현 : 당신이 정말이 복잡성을 원하는 경우

당신은 네 가지 개념을해야합니다. 고객 HAS-A 이름. 이름은 HAS-AN-ASSOCIATED 네이티브 발음과 아마도 HAS-ASSOCIATED 대안 발음입니다. 발음은 HAA (International Phonetic Alphabet)를 사용하는 텍스트 표현 일 수 있습니다. 작성된 표현은 단순히 문자열입니다.

정확한 방향으로 안내 할만큼 충분합니까?

0

고객이 복수명 인 인 경우 Brian 에 동의합니다.

당신은 그러나 아마도 주소와 영어, 프랑스어, 독일어 고객 (형식은 나라마다 다릅니다) 당신은 또한 인터페이스를 사용할 수있는 경우 : 당신이 당신의 비즈니스 로직을 만들 수 이러한 경우

interface Address { 
    void setStreet(String street); 
    void setPostalCode(String code); 
} 

interface Customer { 
    void setName(String name); 
    void setAddress(Address address); 
} 

public class EnglishAddress implements Address { 
    public void setPostalCode(String postalCode) { 
     // custom checking of the typical English zipcode format 
    } 
    ... 
} 

public class FrenchAddress implements Address { 
    public void setPostalCode(String postalCode) { 
     // custom checking of the typical French zipcode format 
    } 
} 

public class EnglishCustomer implements Customer { 
    ... 
} 

을 주소 및 고객을 입력하고 사용자 입력을 기반으로 올바른 클래스를 만듭니다. Factory 클래스를 사용하는 것이 가능하지만 이는 전부 선택 사항입니다.

이러한 방법을 사용하면 고객 및 주소에서 작동하는 상당히 일반적인 비즈니스 논리의 힘을 희생하지 않고 국가 별 유효성 검사 및 메타 정보를 가질 수 있습니다.

0

같은 이름이지만 다른 로케일에서 다르게 표시되는 것은 아닌지 궁금합니다. 그것은 러시아 고객의 스크린이 다른 캐릭터 세트를 사용하고 미국인이 미국인 이름을 표시하면 다른 캐릭터를 사용하게 될 것입니다. 이것이 당신이 직면 한 문제입니까?

관련 문제