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 回答