首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >参数和构造函数

参数和构造函数
EN

Stack Overflow用户
提问于 2013-06-07 19:00:26
回答 4查看 415关注 0票数 1

我在Stack Overflow、Microsoft Developer Network和几个博客中阅读了很多详细的内容。普遍的共识是“Constructor不应该包含大量的参数”。所以遇到这个让我觉得-

  • 初始问题:我的应用程序包含大约15个变量,这些变量在整个应用程序中不断使用。我想出的解决方案是创建一个类,将这些值注入到Properties__。

因此,这看起来很好用,它使我的生活变得非常简单,因为我可以通过objectclass传递到另一个method中,而不必将所有这些变量分配给每个method。但这导致了另一个问题-

代码语言:javascript
复制
public class ServerParameters
{
    // Variable:
    private string template;
    private string sqlUsername;
    private string sqlPassword;
    private string sqlDatabase;
    private string sqlServer;

    public ServerParameter(string _template, string _sqlDatabase, string _sqlServer, 
string _sqlUsername, string _sqlPassword)
    {
        template = _template;
        sqlUsername = _sqlUsername;
        sqlPassword = _sqlPassword;
        sqlDatabase = _sqlDatabase;
        sqlServer = _sqlServer;
    }

// Link the private strings to a group of Properties.

}

因此,这个Constructor已经变得非常臃肿--但是现在我需要实现更多的参数。

  • 问题二:所以我有一个臃肿的Constructor,通过实现不完全适合这个特定Class的其他项目。我的解决方案是创建一个subclasscontainer来保存这些不同的classes,但是能够利用这些classes__。

您现在看到了这个难题,它引起了所有重要的问题--当您只能继承一次时,如何构建一个容器来容纳所有这些子类?

和为什么不应该在构造器中使用这么多的参数,为什么它是坏的呢?

我的想法是如何实现一个Container,但是我觉得我做错了--因为当我尝试使用这些Parameters时,我经常会得到Null引用异常。

代码语言:javascript
复制
public class VarContainer
{
     private ServerParameter server;
     private CustomerParameter customer;

     public VarContainer(ServerParameter _server, CustomerParameter _customer)
     {
         server = _server;
         customer = _customer;
     }
}

我认为这是因为内部类本身并没有真正得到那些赋值变量,但是我完全迷失了实现我的目标的最佳方法-

EN

Stack Overflow用户

发布于 2013-06-07 19:16:40

在我看来,您可以使用依赖注入容器,比如统一温莎城堡

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16991152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档