根据区域设置值实例化右类

时间:2017-08-10 15:45:42

标签: java

我想知道是否有可能做我想做的事。 我有一个Locale值,并且根据它的值,我想仅使用父的构造函数自动实例化正确的类。

例如:我想这样做

void aMethod()
{
     doSomethings();
}

void doSomethings()
{
     Parent parent = new Parent();
     parent.callMethod();
}

基于Locale,例如Locale.France。我想在调用new Parent()时实例化ChildFR。

如果我足够清楚,或者如果可以使用Java,请告诉我。欢迎任何想法。

1 个答案:

答案 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();