0

是否可以构建一个只接受给定选项列表中的值的方法?具有类似于 setBackground 方法的“行为”的东西,它开始显示默认值,

BorderPane bP = new BorderPane();
bP.setBackground(Background.EMPTY);

我的目标是构建一个工厂类,它有一个方法,可以接受 A、B 或 C 并返回相应的对象。我正在寻找的最终结果是:

MyObject square = new MyObjectFactory(SQUARE)// square is default and is added automatically to the method.
MyObject circle= new  MyObjectFactory(CIRCLE);//user gets a list of SQUARE, CIRCLE, or TRIANGLE... 

我试图在 Stackoverflow 上查找类似的问题,但我什至不确定我正在寻找的功能是从什么开始的。所以我在描述“行为”,有点。

有没有办法在JAVA中制作这样的东西,或者它只是一个JAVA“东西”?任何帮助表示赞赏。

4

1 回答 1

1

这可能是自定义图形对象的工厂模式:

enum ObjectType { CIRCLE, SQUARE };

public class MyObject extends Group {
}

public class MyCircle extends MyObject {
    public MyCircle() {
        getChildren().add(new Circle(12));
    }
}

public class MyRectangle extends MyObject {
    public MyRectangle() {
        getChildren().add(new Rectangle(0, 0, 18, 18));
    }
}

public class MyObjectFactory {
    static MyObject make(ObjectType type) {
        switch (type) {
            case CIRCLE: return new MyCircle();
            case SQUARE: return new MyRectangle();
            default: throw new UnsupportedOperationException("Unsupported type: "+type);
        }
    }
}

void testFactory(VBox box) {
    MyObject circle = MyObjectFactory.make(ObjectType.CIRCLE);
    MyObject square = MyObjectFactory.make(ObjectType.SQUARE);

    box.getChildren().addAll(circle, square);

}
于 2014-11-11T07:01:15.653 回答