程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了当具体对象采用不同的构造函数参数时,在Java中为工厂大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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

开发过程中遇到当具体对象采用不同的构造函数参数时,在Java中为工厂的问题如何解决?下面主要结合日常开发的经验,给出你关于当具体对象采用不同的构造函数参数时,在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中实现Factory模式。我有一个名为Shape的类,该类由Circle和Triangle扩展。问题在于Shape构造函数仅获取2个参数,而Circle则获取3个参数,Triangle也是如此(由于与Circle相同,因此我不会在代码部分中显示)。为了更好地演示它:

    privatE interface ShapeFactory{
        public Shape create(int x,int y);
    }

    private class CircleFactory implements ShapeFactory{
        public Shape create(float radius,int x,int y){ //error
            return new Circle(radius,x,y);
        }
    }

任何想法如何克服这个问题?我一定不能从工厂内部接收用户的输入(必须从外部接收)。

谢谢!

大佬总结

以上是大佬教程为你收集整理的当具体对象采用不同的构造函数参数时,在Java中为工厂全部内容,希望文章能够帮你解决当具体对象采用不同的构造函数参数时,在Java中为工厂所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。