为不同的整数调用相同的方法

时间:2015-12-22 14:19:59

标签: java swing

我想调用以下方法:

public void moveForward(int spaces) {
    if(spaces >= 0) {
        if(canvas.greenX == 0) {
            if(canvas.greenY == 0) {
                canvas.greenX = canvas.greenX + spaces;
            }
            else if((canvas.greenY - spaces) < 0) {
                int m = spaces - canvas.greenY;
                canvas.greenY = 0;
                canvas.greenX = canvas.greenX + m;
            }
            else {
                canvas.greenY = canvas.greenY - spaces;
            }
        }
    }
    canvas.repaint();
}

但我希望能够在我的画布对象中更改不同的值(即redX,redY,blueX,blueY等等),具体取决于需要向前移动的颜色。

我知道我可以再次写出这个方法,但是使用不同的值,但我确定有一种方法可以将值传递给方法本身。

任何指导都将不胜感激

2 个答案:

答案 0 :(得分:0)

Strategy Pattern:

  

定义一系列算法,封装每个算法,然后制作   算法可以在该族中互换。

创建每个<?php foreach($resp->searchResult->item as $item) { if ($item->itemId == 1234) { continue; } // Here you can use $item .... } 的实例,并将其添加到immutable MoveStrategy,并将Map<Move,MoveStrategy>RedGreen枚举添加为地图的关键。然后,您可以使用简单的Blue.get(RED).move()

轻松选择要执行的逻辑
.get(GREEN).move()

答案 1 :(得分:0)

您需要进一步分解您的类型。您在评论中说您的值为int s。在这种情况下,您可以使用类java.awt.Point,因为它具有int x和y属性。

因此,在您的班级Canvas中,您将:greenX,greenY,redX,redY等替换为:

Point green;
Point red;
Point blue;

并在您的方法moveForward中,添加要作为参数调整的彩色点:

public void moveForward(int spaces, Point coloredPoint) {

在方法内部,您将canvas.greenX替换为coloredPoint.xcanvas.greenY替换为coloredPoint.y

Voila,问题解决了!