我真的很困惑这个代码,我想完成。这里是它的一个片段:Java - 将其类作为返回类型的方法?
public class PuzzleStateSimple implements PuzzleState {
public PuzzleState moveUp() {
return null;
}
public int[] getStateArray() {
}
}
我不明白这是怎么回事。我想回到课堂上吗?或者我建造一个新的PuzzleStateSimple
对象并返回它?这个类看起来不像它是用Singleton模式设计的。
下面是使用这种类测试用例的一个片段:
public void testMoveUp(){
// 2 8 3 2 0 3
// 1 0 4 -> 1 8 4
// 7 6 5 7 6 5
PuzzleState start = createPuzzleState(puzzleCenterPosition.clone()) ;
PuzzleState goal = createPuzzleState(puzzleFirstRowMiddlePosition2.clone()) ; // note: 2 puzzles of that kind, 2nd one is it
PuzzleState result = start.moveUp();
assertTrue("Expected" + printPuzzle(goal.getStateArray()) + ", computed: " + printPuzzle(result.getStateArray()),
goal.isEqual(result));
}
预先感谢。
,你必须回答的问题:这是一个**工厂方法**(在方法链接使用)或者是PuzzleState **不可变类型**? Google是你的朋友,除非你知道答案,否则我不会阅读任何答案,因为发布答案的人会在其他答案出现时假设一个。 – 2014-09-04 17:17:56
@KevinWorkman我不认为这个类是一个工厂方法。我不认为PuzzleState是不可变的类型,因为有另一种方法叫做'int [] getStateArray''。所以我认为作者不打算让这个PuzzleState数据类型是不可变的。 – mrQWERTY 2014-09-04 17:21:25
那么,从类似方法返回自己的类型的唯一原因通常是工厂/链接方法或不可变类型。这可能是一个或另一个,问题的答案取决于它是哪一个。这里不只有一个正确的答案,这完全取决于代码应该做什么。 – 2014-09-04 17:23:21