首页 > 解决方案 > 如果大多数参数都是共享的,那么使用静态字段来限制构造函数参数的数量是不是很糟糕?

问题描述

实现下面提出的逻辑会是糟糕的设计吗?本质上,目标是限制我传递共享参数的次数

**// Current implementation**
public class Configuration
{
    public Configuration(Foo f, Bar b, Baz bz, Qux q, FooBar fb);
    public Configuration(Foo f, Bar b, Baz bz, Qux q, BazQux bz);
}


Main
{
  var configA = new Configuration(f, b, bz, q, fb)
  var configB = new Configuration(f, b, bz, q, bz)
  DoStuff(configA);
  DoOtherStuff(configB);
}

**// Proposed implementation**
public class Configuration
{
    static Foo f;
    static Bar b;
    static Baz bz;
    static Qux q;
    public Configuration(FooBar fb);
    public Configuration(BazQux bz);
}

Main
{
  Configuration.Foo = f; 
  . . . 
  var configA = new Configuration(fb)
  var configB = new Configuration(bz)
  DoStuff(configA);
  DoOtherStuff(configB);
}

标签: c#

解决方案


是的,这是一个糟糕的设计。如果您需要创建一个使用不同 Foo 实例的不同配置 configC 怎么办?


推荐阅读