¡¶JAVAÓëģʽ¡·µÚ23Ìì¨D״̬ģʽ (Èý)

2014-11-24 08:31:45 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 4

}
System.out.println("ÄãÓжñÒâË¢ÆÁÐÐΪ£¬È¡ÏûͶƱ×ʸñ");
}

}
package com.bankht.State.Vote;

/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-3 ÉÏÎç09:40:50
*
* @Àà˵Ã÷ £º¾ßÌå״̬Àࡪ¡ª¶ñÒâˢƱ
*/
public class SpiteVoteState implements VoteState {

@Override
public void vote(String user, String voteItem, VoteManager voteManager) {
// ¶ñÒâͶƱ£¬È¡ÏûÓû§µÄͶƱ×ʸñ£¬²¢È¡ÏûͶƱ¼Ç¼
String str = voteManager.getMapVote().get(user);
if (str != null) {
voteManager.getMapVote().remove(user);
}
System.out.println("ÄãÓжñÒâË¢ÆÁÐÐΪ£¬È¡ÏûͶƱ×ʸñ");
}

}

¡¡¡¡¾ßÌå״̬Àࡪ¡ªºÚÃûµ¥

[java]
package com.bankht.State.Vote;

/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-3 ÉÏÎç09:41:15
*
* @Àà˵Ã÷ £º¾ßÌå״̬Àࡪ¡ªºÚÃûµ¥
*/
public class BlackVoteState implements VoteState {

@Override
public void vote(String user, String voteItem, VoteManager voteManager) {
// ¼Ç¼ºÚÃûµ¥ÖУ¬½ûÖ¹µÇ¼ϵͳ
System.out.println("½øÈëºÚÃûµ¥£¬½«½ûÖ¹µÇ¼ºÍʹÓñ¾ÏµÍ³");
}

}
package com.bankht.State.Vote;

/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-3 ÉÏÎç09:41:15
*
* @Àà˵Ã÷ £º¾ßÌå״̬Àࡪ¡ªºÚÃûµ¥
*/
public class BlackVoteState implements VoteState {

@Override
public void vote(String user, String voteItem, VoteManager voteManager) {
// ¼Ç¼ºÚÃûµ¥ÖУ¬½ûÖ¹µÇ¼ϵͳ
System.out.println("½øÈëºÚÃûµ¥£¬½«½ûÖ¹µÇ¼ºÍʹÓñ¾ÏµÍ³");
}

}

¡¡¡¡»·¾³Àà

[java]
package com.bankht.State.Vote;

import java.util.HashMap;
import java.util.Map;

/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-3 ÉÏÎç09:41:35
*
* @Àà˵Ã÷ £º»·¾³Àà
*/
public class VoteManager {
// ³ÖÓÐ×´Ìå´¦Àí¶ÔÏó
private VoteState state = null;
// ¼Ç¼Óû§Í¶Æ±µÄ½á¹û£¬Map¶ÔÓ¦Map<Óû§Ãû³Æ£¬Í¶Æ±µÄÑ¡Ïî>
private Map mapVote = new HashMap();
// ¼Ç¼Óû§Í¶Æ±´ÎÊý£¬Map¶ÔÓ¦Map<Óû§Ãû³Æ£¬Í¶Æ±µÄ´ÎÊý>
private Map mapVoteCount = new HashMap();

/**
* »ñÈ¡Óû§Í¶Æ±½á¹ûµÄMap
*/
public Map getMapVote() {
return mapVote;
}

/**
* ͶƱ
*
* @param user
* ͶƱÈË
* @param voteItem
* ͶƱµÄÑ¡Ïî
*/
public void vote(String user, String voteItem) {
// 1.Ϊ¸ÃÓû§Ôö¼ÓͶƱ´ÎÊý
// ´Ó¼Ç¼ÖÐÈ¡³ö¸ÃÓû§ÒÑÓеÄͶƱ´ÎÊý
Integer oldVoteCount = mapVoteCount.get(user);
if (oldVoteCount == null) {
oldVoteCount = 0;
}
oldVoteCount += 1;
mapVoteCount.put(user, oldVoteCount);
// 2.ÅжϸÃÓû§µÄͶƱÀàÐÍ£¬¾ÍÏ൱ÓÚÅж϶ÔÓ¦µÄ״̬
// µ½µ×ÊÇÕý³£Í¶Æ±¡¢Öظ´Í¶Æ±¡¢¶ñÒâͶƱ»¹ÊÇÉϺÚÃûµ¥µÄ״̬
//ÏÂÃæÊ¹Óñ¾ÈË×Ô´´³£Óõġ°¼ÙÉèÐÞÕý·¨¡± Íê³ÉswitchµÄ½á¹¹
if(oldVoteCount == 1 ) {
state = new NormalVoteState();
}
if(oldVoteCount > 1 ) {
state = new RepeatVoteState();
}
if(oldVoteCount > 5 ) {
state = new SpiteVoteState();
}
if(oldVoteCount > 8 ) {
state = new BlackVoteState();
}

// if (oldVoteCount == 1) {
// state = new NormalVoteState();
// } else if (oldVoteCount > 1 && oldVoteCount < 5) {
// state = new RepeatVoteState();
// } else if (oldVoteCount >= 5 && oldVoteCount < 8) {
// state = new SpiteVoteState();
// } else if (oldVoteCount > 8) {
// state = new BlackVoteState();
// }

// È»ºóתµ÷״̬¶ÔÏóÀ´½øÐÐÏàÓ¦µÄ²Ù×÷
state.vote(user, voteItem, this);
}
}
package com.bankht.State.Vote;

import java.util.HashMap;
import java.util.Map;

/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-3 ÉÏÎç09:41:35
*
* @Àà˵Ã÷ £º»·¾³Àà
*/
public class VoteManager {
// ³ÖÓÐ×´Ìå´¦Àí¶ÔÏó
private VoteState state = null;
// ¼Ç¼Óû§Í¶Æ±µÄ½á¹û£¬Map¶ÔÓ¦Map<Óû§Ãû³Æ£¬Í¶Æ±µÄÑ¡Ïî>
private Map mapVote = new HashMap();
// ¼Ç¼Óû§Í¶Æ±´ÎÊý£¬Map¶ÔÓ¦Map<Óû§Ãû³Æ£¬Í¶Æ±µÄ´ÎÊý>
private Map mapV