有个案例我不知道是否对应哪个设计模式,求一个最佳实践。下面4个类存在继承和包含关系
public class QrScene {
private String remark;
}
public class QrSceneInteger extends QrScene {
private Integer scene_id;
}
public class QrSceneString extends QrScene {
private String scene_str;
}
public class QrSceneWrapper implements Serializable {
private static final long serialVersionUID = 1L;
private QrScene scene;
}
// 通过传入参数创建不同数据类型的对象并返回
private <T> QrSceneWrapper getQrSceneWrapper(T data){
QrSceneWrapper qrSceneWrapper = null;
if(data instanceof String){
qrSceneWrapper = new QrSceneWrapper();
QrSceneString qrSceneString = new QrSceneString();
qrSceneString.setScene_str((String) data);
qrSceneWrapper.setScene(qrSceneString);
}else if(data instanceof Integer){
qrSceneWrapper = new QrSceneWrapper();
QrSceneInteger qrSceneInteger = new QrSceneInteger();
qrSceneInteger.setScene_id((Integer) data);
qrSceneWrapper.setScene(qrSceneInteger);
}
if(qrSceneWrapper != null) return qrSceneWrapper;
throw new BusinessException("用于兑换二维码的场景值的ticket只支持两个类型:Integer,String");
}
有个要求是不可让一个对象中同时出现属性 scene_id 和 scene_str
求方法 getQrSceneWrapper 的最佳实践。
用策略模式加工厂模式