我试图实现 GoF 的一些构造设计模式,其中之一是“原型”。我的想法是创建一个用户界面(一个带有按钮和标签的框架),我可以使用原型来克隆一个按钮,因为我的程序是一个记忆游戏(关于马里奥兄弟:D)所有这些都在 JAVA 上。我也想实现我自己的克隆方法。
我认为我需要做的是制作一个按钮,当您克隆它时,您只需更改按钮的名称(可能还有按钮显示的图像)。
首先,我有一个名为Prototype
克隆的类:
import javax.swing.JButton;
public interface Prototype
{
//Method to make a clone
public Prototype makeClone();
public JButton getButtonName();
public void setButtonName(String elDato);
}//end interface Prototype
然后,我ConcretePrototypeButton
要实现接口Prototype
并使用它的克隆方法。
import javax.swing.JButton;
public class ConcretePrototypeButton implements Prototype{
private String aData;
static JButton aButton;
//--------
public Prototype makeClone(){
Prototype aClone;
//---------------
aClone = new ConcretePrototypeButton();
aClone.setNombreBoton(this.aData);
return aClone;
}//end makeClone
public String getButtonName()
{
return aData;
}//end getNombreBoton
public void setButtonName(String aData) {
Object theName =new String(aData);
theName=theName.toString();
//------------
this.aData=(JButton)theName;
}//end setButtonName method
}//end class ConcretePrototypeButton
但是javagetButtonName
在这一行的方法中向我展示了一个问题:
return aData;
最后我有一个名为UserInterface
我的客户的第三个班级,但我不能有一个main
,因为我main
在另一个完成我的程序的班级。
import javax.swing.*;
public class Interfaz {
Prototype aButton;
Prototype buttonOne;
Prototype buttonTwo;
//-------------------
aButton = new ConcretePrototypeButton();
aButton.setButtonName("buttonOne");
//We make a clone
buttonOne = aButton.makeClone();
aButton.setButtonName("buttonTwo");
//We make another clone
buttontwo = aButton.makeClone();
//and continue creating buttons to reach 16 buttons.
}//end clase Interfaz
但是我做错了什么,我知道这是什么,在这堂课上告诉我这一行的错误:
Prototype buttonTwo;
在这方面:
}//end clase Interfaz
这个想法是有这样的东西:http: //imageshack.us/photo/my-images/855/te7q.png/ (如果你看不到图像,请告诉我)。
如果有人可以帮助我,我会很感激。提前致谢。
附加说明:当我将方法从 JButton 返回的内容更改为 String java 时,我向我发送了另一个错误: - 实现 Prototype.getNombreBoton - 返回类型与:Prototype.getNombreBoton 不兼容
如果我也改变它。我如何声明这些类的目标是制作“按钮”的对象?