2013-03-24 3 views
0

알파벳을 팩토리 방식으로 구현하는 방법이 있습니까?팩토리 방법으로 알파벳 구현

예 :

public class Alphabet 
{ 
    public Alphabet(image picture, string name) 
    { 
     _picture = picture; 
     _name = name; 
    } 

    public void Show() 
    { 
     _picture.Show(); 
    } 
} 

public LetterA: Alphabet 
{ 
    public LetterA() : Alphabet("lttrA.png", "Letter A"){} 
} 

.... 


public LetterZ: Alphabet 
{ 
    public LetterZ() : Alphabet("lttrZ.png", "Letter Z"){} 
} 

사용 :

Alphabet ltr1 = new LetterA(); 

요구 사항 : 사진은 절대 변하지 않을 것, 미래

감사

에는 추가하는 방법은

답변

0

팩토리 메소드는 새로운 인스턴스를 제공하지 않습니다 각 호출마다 클래스의 귀하의 경우에는 여러 인스턴스를 만들 필요가 없으며 알파벳에 대한 열거 형을 만들 수 있습니다.

public enum Alphabet 
{ 
    A(/*some image*/, "A"), 
    B(/*some image*/, "B"), 
    C(/*some image*/, "C"), 
    D(/*some image*/, "D"); 
    // ... and so on till Z 

    private final String name; 
    private final Image picture; 

    private Alphabet(Image picture, String name) 
    { 
     this.picture = picture; 
     this.name = name; 
    } 

    public void Show() 
    { 
     picture.Show(); 
    } 
} 
+0

그래서 26 개의 클래스와 추가 메서드 인 인스턴스 (싱글 톤으로 인해)가 필요합니다. 그러나 26 개 수업은 26 개 수업으로 남아 있습니까? 내 말은, 하위 클래스 폭발이없는 알파벳을 구현하는 다른 방법이있을 수 있다는 것입니까? 감사. – zzfima

+0

이 경우 팩토리 메서드는 관련이 없다는 것이 지적되었습니다. 여러 싱글 톤 대신 enum을 사용하도록 이전 코드를 수정했습니다. 희망이 도움이! – Param

0

왜 26 개의 하위 클래스를 원하십니까? 문자열 문자에서 이미지 파일로 매핑하려는 경우 이해합니다. 간단한지도만으로도 충분합니다. 그리고 아마도 그지도에 대한 접근을 처리하고, 문자 만 전달되고, 대문자로 정규화되는지 확인하는 ...

관련 문제