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();

要件:写真は変更されることはなく、将来的にメソッドを追加することもありません

ありがとう

4

2 に答える 2

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();
    }
}
于 2013-03-24T08:11:00.783 に答える
0

なぜ26個のサブクラスが必要なのですか?文字列文字から画像ファイルにマッピングしたいことを理解している場合。単純なマップで十分です。そして多分その地図へのアクセスを処理する方法、文字だけが渡されることをチェックするために、それらを(大文字に)正規化する、...

于 2013-03-24T10:25:20.667 に答える