【发布时间】:2015-06-22 00:29:38
【问题描述】:
所以我有一个程序,您可以在其中登录并在friends 数组列表中添加/删除朋友。我也可以喜欢某个东西,那个东西将被存储到likes arraylist 中。我被要求为我执行的任何操作设置撤消和重做选项。
所以我想加 apple 为好友。之后,当我选择撤消选项时,我可以撤消该操作,这样 apple 就不再是我的朋友了。当输入是我输入要存储到friends 数组列表中的任何名称或单词时,我如何使用Command Pattern 来解决这个问题?
我做了一些研究,发现使用命令模式可能是我最好的选择,因为这必须在我已经拥有的 Facebook 类下完成。我假设我必须使用两个不同的堆栈,但我对这个话题有点迷失了。
我决定添加我所拥有的部分内容,以便在我需要做什么以及我的程序做什么方面获得更多帮助。
在驱动程序中
Facebook facebook1 = new Facebook();
if (userInput == 6)
{
System.out.println("Login");
String operand1 = getOperand("What is the Username? ");
String operand2 = getOperand("What is the Password? ");
System.out.println("Enter a friend to be added. ");
String operand3 = getOperand("What is the Username? ");
facebook1.friend(operand3);
}
if (userInput == 7)
{
System.out.println("Login");
String operand1 = getOperand("What is the Username? ");
String operand2 = getOperand("What is the Password? ");
System.out.println("Enter a friend to be removed. ");
String operand3 = getOperand("What is the Username? ");
facebook1.defriend(operand3);
}
if (userInput == 12)
{
System.out.println("Login");
String operand1 = getOperand("What is the Password? ");
facebook1.undo();
}
if (userInput == 13)
{
System.out.println("Login");
String operand1 = getOperand("What is the Password? ");
facebook1.redo();
}
在 Facebook 课堂中
ArrayList<FacebookUser> recommendedFriends = new ArrayList<FacebookUser>();
void friend(String newFriend)
{
boolean positiveChecker = false;
for (int i = 0; i < recommendedFriends.size(); i++)
{
if (recommendedFriends.get(i).toString().equalsIgnoreCase(newFriend))
{
System.out.println("Error: This friend already exists.");
positiveChecker = true;
}
}
if (positiveChecker == false)
{
FacebookUser friend = new FacebookUser(newFriend, newFriend );
recommendedFriends.add(friend);
System.out.println(friend + " is now your friend.");
}
positiveChecker = false;
}
void defriend(String formerFriend)
{
boolean positiveChecker = false;
for (int i = 0; i < recommendedFriends.size(); i++)
{
if (recommendedFriends.get(i).toString().equalsIgnoreCase(formerFriend))
{
recommendedFriends.remove(i);
System.out.println(formerFriend + " has been removed from your friends list.");
positiveChecker = true;
}
if (recommendedFriends.size() == (i + 1) && recommendedFriends.get(i).toString() != formerFriend
&& positiveChecker == false)
{
System.out.println("Error: There is no friend with this username.");
}
}
positiveChecker = false;
}
public interface Command
{
public void undo();
public void redo();
}
【问题讨论】:
-
iirc,你只需要一个堆栈。
标签: java arraylist command-pattern