bcl*_*man 2 java architecture oop
我正在用Java编写一个国际象棋游戏,用一个具有2d Square对象数组的Board类进行设置.每个正方形的高度和宽度(介于0和7之间).我将编写一个接收方形对象,垂直偏移和水平偏移的方法.
例如:如果我调用getNearbySquare(mySquare,3,2),它应该返回我的Board中的方形对象,它位于mysquare上方3和mySquare右侧2.
我最初在Square类中将它写为实例方法,它只是采用垂直和水平偏移.问题是,我正在创建然后返回一个新的方形对象,而不是我的Board类中的2d数组中的正确对象.
我看到两个选择:
1)在Square类中创建一个实例方法,该方法接受Board对象,垂直偏移和水平偏移.我将找到调用此方法的方形对象的当前高度和宽度,添加垂直和水平偏移以在所需方块的板中获取新位置,然后使用Board [newHeight] [newWidth]访问它.
2)在Board类中创建一个实例方法做同样的事情,但不要求我传入Board对象,如1).相反,我需要传入方形对象.
在做出这些决定时,是否存在普遍接受的做法?
感谢Mariogs的帮助
从一个非常简单的观点来看,这个getNearbySquare()
方法更适合作为一个实例方法Board
而不是方块,因为该方法需要有关板的布局和总体的密切信息,这将更容易做到(和在Board
实例中保持封装/松散耦合).
在Square
实例上使用该方法意味着让方形对象访问有关可能是私有的板的信息.
相关阅读;