您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

当具体对象采用不同的构造函数参数时,在Java中为工厂

当具体对象采用不同的构造函数参数时,在Java中为工厂

您有两种选择:

1)抽象工厂

RectangularShape extends Shape

RoundShape extends Shape

RectangularShapeFactoryRoundShapeFactory

2)构建器(另请参见有效Java中的第2项)

public Shape {
    private final int x;
    private final int y;
    private final double radius;

    private Shape(Builder builder) {
        x = builder.x;
        y = builder.y;
        radius = builder.radius;
    }

    public static class Builder {
        private final int x;
        private final int y;
        private double radius;

        public Builder(int x, int y) {
            this.x = x;
            this.y = y;
        }

        public Builder radius(double radius) {
            this.radius = radius;
            return this;
        }

        public Shape build() {
            return new Shape(this);
        }    
    }
}

//in client code

    Shape rectangle = new Shape.Builder(x,y).build();
    Shape circle = new Shape.Builder(x,y).radius(radiusValue).build();
java 2022/1/1 18:32:13 有582人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶