Android 我可以用生成器模式创建抽象片段类吗?

Android 我可以用生成器模式创建抽象片段类吗?,android,android-fragments,builder-pattern,Android,Android Fragments,Builder Pattern,我制作了一些扩展topFragment类的片段。但是它有可变的参数——自定义侦听器、一些模型等等 public abstract class TopFragment extend Fragment { public interface OnCustomListener { void onCustomListener(); } protected OnCustomListener onCustomListener; protected int imp

我制作了一些扩展topFragment类的片段。但是它有可变的参数——自定义侦听器、一些模型等等

public abstract class TopFragment extend Fragment {
    public interface OnCustomListener {
        void onCustomListener();
    }
    protected OnCustomListener onCustomListener;
    protected int importantValue;
    protected String importantString;

    protected abstract void doSomething();

    public static class Builder() {
        protected OnCustomListener onCustomListener;
        protected int importantValue;
        protected String importantString;

        public Builder(OnCustomListener onCustomListener) {
            this.onCustomListener = onCustomListener;
        }

        public Builder setValue(int value) {
            this.importantValue = value;
            return this;
        }

        public Builder setString(String value) {
            this.importantString = value;
            return this;
        }
    }
}
这是第二个片段类

public class SecondFragment extend TopFragment {
    @Override
    protected void doSomething() {
        // do something.
    }
}

public class ThirdFragment extend TopFragment {
    @Override
    protected void doSomething() {
        // do something.
    }
}
TopFragment fragment=newsecondfragment()

它起作用了。那么如何使用生成器创建继承片段类的实例呢?

类的外部环境的实现绑定到
生成器
,它有一个私有的
构造函数
,该构造函数以
生成器
对象作为参数,例如

public class ThirdFragment extend TopFragment {
    @Override
    protected void doSomething() {
        // do something.
    }

   private ThirdFragment(Builder builder) {
      // use the members of builder to build your object
   } 
}
Builder
本身有一个调用该构造函数的
build()
方法。例如

    public ThirdFragment build() {
        return new ThirdFragment(this);
    }
现在
Fragment
既不能有私有构造函数,也不能有接受参数的构造函数,因此不能真正使用
Builder
模式