在类之间传递对象不好的做法?

时间:2016-01-10 15:21:01

标签: c# oop parameter-passing

我目前正在使用C#开发一个IRC bot。我有一个IRC类,包含有关IRC服务器(IP,端口,通道,尼克)的信息以及发送和读取等方法。每当我从服务器收到任何信息时,我都会将它传递给消息处理程序,消息处理程序通过使用如下所示的目录来检查它是否是命令

private Dictionary<string, ICommandState> _commandList;

我正在使用gof状态模式来创建新命令。我拥有的一个命令是PingCommand这个命令想要编写&#34; PONG&#34;输出到IRC服务器作为响应&#34; PING&#34;。我已经绘制了快速类图here

所以这是我的问题/问题。我想要PingCommand(以及其他正确的命令)来了解在&#34; MainClass&#34;中创建的IRC对象。一种方法是将它传递给MessageHandler的构造函数,然后MessageHandler将它传递给PingCommand,但我觉得这样做会很糟糕,因为MessageHandler不需要IRC对象。

另一种方法是让IRC类静态但我不太确定这是不是一个好方法呢?

我能提出的最后一个解决方案(以及我使用atm的解决方案)是创建另一个名为CommandProvider的类,它基本上像这样设置字典:

    public CommandProvider(IIRC irc)
    {
        CommandList = new Dictionary<string, ICommandState>();
        CommandList.Add("PING",new PingCommand() {Irc = irc});
        CommandList.Add("376",new Command376() { Irc = irc });
        CommandList.Add("366",new Command366() { Irc = irc });
    }

然后将它传递给messageHandler,但我仍然不太确定这是否是一个好方法呢?

我希望你们能给我一些关于如何进行的建议

0 个答案:

没有答案