Java 1.4 Factory вопрос - PullRequest
       1

Java 1.4 Factory вопрос

1 голос
/ 10 февраля 2011

У меня есть фабрика, и я хочу ограничить возможные значения, которые могут быть переданы в метод get.

public static class FooFactory{

 public static final String TYPE1= "type1";
 public static Foo getFoo(String type){
   switch(type){
    case "type1":
      return new Type1();
    }
   }

 }

Чтобы использовать это:

FooFactory.getFoo(FooFactory.TYPE1);

Я хотел бы ограничить параметры, которые могут быть переданы. Есть идея создать абстрактный класс Type, затем создать подкласс и использовать Type в качестве параметра?

1 Ответ

4 голосов
/ 10 февраля 2011

Не делайте его на подклассы, просто создайте класс Type с закрытым конструктором, который принимает параметр stirng, и определите публичные Type константы.

Примерно так.

public final class Type {

    public static final Type FOO = new Type( "foo" );
    public static final Type BAR = new Type( "bar" );

    private String type;

    private Type( String type ) {
      this.type = type;
    }

    public String getType() { return type; }
}
...