小编Mil*_*oin的帖子

工厂模式,按财产选择

我有一个(不断增长的)数据生成器列表.我需要的生成器是由工厂类创建的.生成器都实现了一个通用接口,其中包括一个静态字符串name.

我想做什么:使用上述名称的字符串参数调用factory.Create方法.create方法使用此名称查找生成器并返回所述生成器的新实例.

我认为这样做的好处是:我只需添加新的生成器类而无需编辑工厂.

题:

  1. 这是处理这个问题的好方法吗?
  2. 我怎样才能找到所有发电机?反映接口的每个实现/命名空间的每个成员(对于生成器及其接口是唯一的)?
  3. 称这种工厂工作方式是正确的,还是这种模式不同?

最后我会这样称呼工厂(简化):

//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)

c# design-patterns factory

7
推荐指数
1
解决办法
691
查看次数

JavaScript Date.toLocaleDateString()-仅设置选项

情况:我想使用JavaScript函数Date.toLocaleDateString()在用户首选的语言环境中显示日期。到目前为止,还不错,但是我想显示该2-digit选项的月份和日期。

据我所知,您必须使用Date.toLocaleDateString(locale, options)显示选项,但是该选项应该使用哪个值localetoLocaleDateString()内部读取哪个变量来设置语言环境,以便我可以读出该变量并将其传递给具有2个参数的函数调用?

javascript locale date

3
推荐指数
1
解决办法
2759
查看次数

标签 统计

c# ×1

date ×1

design-patterns ×1

factory ×1

javascript ×1

locale ×1