我正在考慮像迷宮中的人這樣簡單的運動的設計。如何在迷宮中實現人?
我想製作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
我相信如此。儘量給每個班級適當的責任和數據結構。在我們的案例中,有一個人有責任走出迷宮,這需要的部分數據是他的位置。這一切都屬於人。但迷宮並沒有特別的責任。它確實有一個必須建模的結構。就這樣。記住你正在編程。讓電腦做東西是最重要的。用「迷宮」和「人」這樣的自然術語來思考會有所幫助,但是不要過多地關注建模天然構造。可用的代碼仍然是目標。 –