要摆脱Builder实现中的instanceof,可以使用多态性。具体来说,可以使用接口和抽象类来实现。
首先,可以定义一个接口或抽象类,该接口或抽象类包含了所有Builder实现中需要的方法。然后,可以让每个Builder实现该接口或抽象类,并实现其中的方法。
在使用Builder实现时,可以将其定义为接口或抽象类的类型,而不是具体的Builder实现。这样,就可以避免使用instanceof来判断Builder实现的类型,而是使用多态性来调用其方法。
例如,假设有一个Builder接口,其中包含了一个build()方法:
public interface Builder {
public Object build();
}
然后,可以让每个Builder实现该接口,并实现其中的build()方法:
public class ConcreteBuilder1 implements Builder {
public Object build() {
// 实现Builder1的build()方法
}
}
public class ConcreteBuilder2 implements Builder {
public Object build() {
// 实现Builder2的build()方法
}
}
在使用Builder实现时,可以将其定义为Builder类型,而不是具体的Builder实现:
public class Director {
private Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
public Object construct() {
return builder.build();
}
}
这样,就可以避免使用instanceof来判断Builder实现的类型,而是使用多态性来调用其build()方法。
高校公开课
企业创新在线学堂
TVP技术夜未眠
第四期Techo TVP开发者峰会
第四期Techo TVP开发者峰会
领取专属 10元无门槛券
手把手带您无忧上云