我正在考虑像迷宫中的人这样简单的运动的设计。如何在迷宫中实现人?
我想制作Maze对象,在其中放入一些Man对象,并调用solve()让它们离开迷宫。 人应该对迷宫一无所知。它可以尝试去找出路。
这里是我看到它:
maze = Maze.new
man1 = Man.new
man2 = Man.new
man3 = Man.new
maze.put(man1,man2,man3)
maze.men.each do |man| { man.solve }
但如何实现这些类的身体吗? 除非我给迷宫实例给他,否则人怎么能知道如何走进迷宫? 但是,如果我这样做:
maze.put(man1(maze),man3(maze),man2(maze))
放什么个人里面有迷宫,如果我可以只给迷宫实例给他们的原因是什么?
这是我不明白,找不到优雅的解决方案。
是的。这样我明白了。但是有一种感觉,我们给人一个迷宫而不是给人一个迷宫? – VitalyP
我相信如此。尽量给每个班级适当的责任和数据结构。在我们的案例中,有一个人有责任走出迷宫,这需要的部分数据是他的位置。这一切都属于人。但迷宫并没有特别的责任。它确实有一个必须建模的结构。就这样。记住你正在编程。让电脑做东西是最重要的。用“迷宫”和“人”这样的自然术语来思考会有所帮助,但是不要过多地关注建模天然构造。可用的代码仍然是目标。 –