我有一个(不断增长的)数据生成器列表.我需要的生成器是由工厂类创建的.生成器都实现了一个通用接口,其中包括一个静态字符串name.
我想做什么:使用上述名称的字符串参数调用factory.Create方法.create方法使用此名称查找生成器并返回所述生成器的新实例.
我认为这样做的好处是:我只需添加新的生成器类而无需编辑工厂.
题:
最后我会这样称呼工厂(简化):
//Caller
public DataModel GetData2()
{
var generator = new DataFactory().Create("Gen.2");
return generator.GetData();
}
//Factory
public class DataFactory
{
public AbstractDataGenerator Create(string type)
{
//Here the magic happens to find all implementations of IDataGenerator
var allGenerators = GetImplementations();
var generator = allGenerators.FirstOrDefault(f => f.name == type);
if (generator != null)
return (AbstractDataGenerator)Activator.CreateInstance(generator);
else
return null;
}
}
//Interface
public abstract class AbstractDataGenerator
{
public static string name;
public abstract DataModel GetData(); …Run Code Online (Sandbox Code Playgroud) 情况:我想使用JavaScript函数Date.toLocaleDateString()在用户首选的语言环境中显示日期。到目前为止,还不错,但是我想显示该2-digit选项的月份和日期。
据我所知,您必须使用Date.toLocaleDateString(locale, options)显示选项,但是该选项应该使用哪个值locale?toLocaleDateString()内部读取哪个变量来设置语言环境,以便我可以读出该变量并将其传递给具有2个参数的函数调用?