Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这被认为是OOP中的一个好实践吗?_Oop_Methods - Fatal编程技术网

这被认为是OOP中的一个好实践吗?

这被认为是OOP中的一个好实践吗?,oop,methods,Oop,Methods,我试图学习OOP中方法的最佳实践。假设我有这个代码(顺便说一下): 如果我想在连接类实例中调用一个方法,我应该怎么做?我不想给Update方法添加一个返回值,因为这看起来不是一个很好的实践 在这种情况下,当我想让几个类做不同的事情时,我应该怎么做?我应该使用委托和事件吗?如果是,我如何订阅它们。我应该在创建Player实例时订阅它们吗?最后,一个方法总是在另一个方法的范围内调用。然而,授权确实是一种良好的做法。例如,如果您的类行为可能由不同的委托以不同的方式实现,那么您可以应用责任链模式来减少耦

我试图学习OOP中方法的最佳实践。假设我有这个代码(顺便说一下):

如果我想在连接类实例中调用一个方法,我应该怎么做?我不想给Update方法添加一个返回值,因为这看起来不是一个很好的实践


在这种情况下,当我想让几个类做不同的事情时,我应该怎么做?我应该使用委托和事件吗?如果是,我如何订阅它们。我应该在创建Player实例时订阅它们吗?

最后,一个方法总是在另一个方法的范围内调用。然而,授权确实是一种良好的做法。例如,如果您的类行为可能由不同的委托以不同的方式实现,那么您可以应用责任链模式来减少耦合

我不明白您在问什么。你能更好地解释一下吗?没有明显的理由没有返回值。如果需要,请使用返回值@西里是对的;你到底在问什么还不清楚。在Player类实例中,你的意思是什么?我想问的是,在方法之间进行通信的最佳方式是什么。在方法中调用实例的方法似乎不是一个很好的方法为什么你认为调用协作对象的方法是个坏主意?这就是OOP的精髓,它也被称为“消息传递”。
class Player
{
    private Connection conn;
    public Update(Keyboard key)
    {
        if(key.IsPressedKey("a"))
        {
            // should move
            conn.SendPacketMovement(Movement.Left);
        }
    }
}