我想知道是否有可能做我想做的事。 我有一个Locale值,并且根据它的值,我想仅使用父的构造函数自动实例化正确的类。
例如:我想这样做
void aMethod()
{
doSomethings();
}
void doSomethings()
{
Parent parent = new Parent();
parent.callMethod();
}
基于Locale,例如Locale.France。我想在调用new Parent()时实例化ChildFR。
如果我足够清楚,或者如果可以使用Java,请告诉我。欢迎任何想法。
答案 0 :(得分:0)
您可能希望查看工厂模式或构建器模式(其主要目标不是帮助实现多态,但可能会这样做)。
他们没有做你想要做的事情,它通过调用父构造函数来实例化一个孩子,但它们是你想要完成的事情的解决方案(相对于某些状态或配置进行实例化)。 / p>
对于这两种模式,您需要定义实现的抽象(例如Parent)和抽象的具体实现(例如您的孩子,如ChildFR)。然后将实例化作业委托给您的Factory或Builder,它将相对于您的变量返回一个具体实现的实例。
您将拥有工厂方法签名和匹配的呼叫,如:
// return instance relatively to value of locality parameter
CustomFactory.create(String locality) : Parent
Parent parent = (new CustomFactory()).create(var);
或您的构建器方法签名和匹配调用如:
// set locality
CustomBuilder.locatility(String locality) : CustomBuilder
// return instance relatively to value of locatily parameter
CustomBuilder.build() : Parent
Parent parent = (new CustomBuilder()).locality(var).build();