按工厂方法执行字母表

时间:2013-03-24 08:00:12

标签: design-patterns factory-pattern

通过工厂方法实现字母表是否有意义?

示例:

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

要求:图片永远不会改变,未来不会添加方法

由于

2 个答案:

答案 0 :(得分:0)

Factory方法在每次调用时提供一个类的新实例。在您的情况下,不需要创建多个实例,您可以为字母表创建枚举。

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

答案 1 :(得分:0)

为什么要26个子类?如果我理解你想要从字母表字母映射到图像文件。一张简单的地图就足够了。也许是一种方法来处理对该地图的访问,检查是否只传递了字母,将它们标准化(大写),...