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

2014-11-24 08:31:45 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 3
oteCount = 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);
}
}

¡¡¡¡¿Í»§¶ËÀà

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

/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-3 ÉÏÎç09:42:06
*
* @Àà˵Ã÷ £º¿Í»§¶ËÀà
*/
public class Client {

public static void main(String[] args) {

VoteManager vm = new VoteManager();
for (int i = 0; i < 11; i++) {
vm.vote("u1", "A");
}
}

}
package com.bankht.State.Vote;

/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-3 ÉÏÎç09:42:06
*
* @Àà˵Ã÷ £º¿Í»§¶ËÀà
*/
public class Client {

public static void main(String[] args) {

VoteManager vm = new VoteManager();
for (int i = 0; i < 11; i++) {
vm.vote("u1", "A");
}
}

}

¡¡¡¡ÔËÐнá¹ûÈçÏ£º

[html] view plaincopyprint
¹§Ï²Í¶Æ±³É¹¦
Çë²»ÒªÖØ¸´Í¶Æ±
Çë²»ÒªÖØ¸´Í¶Æ±
Çë²»ÒªÖØ¸´Í¶Æ±
Çë²»ÒªÖØ¸´Í¶Æ±
ÄãÓжñÒâË¢ÆÁÐÐΪ£¬È¡ÏûͶƱ×ʸñ
ÄãÓжñÒâË¢ÆÁÐÐΪ£¬È¡ÏûͶƱ×ʸñ
ÄãÓжñÒâË¢ÆÁÐÐΪ£¬È¡ÏûͶƱ×ʸñ
½øÈëºÚÃûµ¥£¬½«½ûÖ¹µÇ¼ºÍʹÓñ¾ÏµÍ³
½øÈëºÚÃûµ¥£¬½«½ûÖ¹µÇ¼ºÍʹÓñ¾ÏµÍ³
½øÈëºÚÃûµ¥£¬½«½ûÖ¹µÇ¼ºÍʹÓñ¾ÏµÍ³
¹§Ï²Í¶Æ±³É¹¦
Çë²»ÒªÖØ¸´Í¶Æ±
Çë²»ÒªÖØ¸´Í¶Æ±
Çë²»ÒªÖØ¸´Í¶Æ±
Çë²»ÒªÖØ¸´Í¶Æ±
ÄãÓжñÒâË¢ÆÁÐÐΪ£¬È¡ÏûͶƱ×ʸñ
ÄãÓжñÒâË¢ÆÁÐÐΪ£¬È¡ÏûͶƱ×ʸñ
ÄãÓжñÒâË¢ÆÁÐÐΪ£¬È¡ÏûͶƱ×ʸñ
½øÈëºÚÃûµ¥£¬½«½ûÖ¹µÇ¼ºÍʹÓñ¾ÏµÍ³
½øÈëºÚÃûµ¥£¬½«½ûÖ¹µÇ¼ºÍʹÓñ¾ÏµÍ³
½øÈëºÚÃûµ¥£¬½«½ûÖ¹µÇ¼ºÍʹÓñ¾ÏµÍ³

¡¡¡¡´ÓÉÏÃæµÄʾÀý¿ÉÒÔ¿´³ö£¬×´Ì¬µÄת»»»ù±¾É϶¼ÊÇÄÚ²¿ÐÐΪ£¬Ö÷ÒªÔÚ״̬ģʽÄÚ²¿À´Î¬»¤¡£±ÈÈç¶ÔÓÚͶƱµÄÈËÔ±£¬ÈκÎʱºòËûµÄ²Ù×÷¶¼ÊÇͶƱ£¬µ«ÊÇͶƱ¹ÜÀí¶ÔÏóµÄ´¦ÀíÈ´²»Ò»¶¨Ò»Ñù£¬»á¸ù¾ÝͶƱµÄ´ÎÊýÀ´ÅжÏ״̬£¬È»ºó¸ù¾Ý״̬ȥѡÔñ²»Í¬µÄ´¦Àí¡£

ÈÏʶ״̬ģʽ
¡¡¡¡¡ñ¡¡¡¡×´Ì¬ºÍÐÐΪ

¡¡¡¡Ëùν¶ÔÏóµÄ״̬£¬Í¨³£Ö¸µÄ¾ÍÊǶÔÏóʵÀýµÄÊôÐÔµÄÖµ£»¶øÐÐΪָµÄ¾ÍÊǶÔÏóµÄ¹¦ÄÜ£¬ÔÙ¾ßÌåµã˵£¬ÐÐΪ´ó¶à¿ÉÒÔ¶ÔÓ¦µ½·½·¨ÉÏ¡£

¡¡¡¡×´Ì¬Ä£Ê½µÄ¹¦ÄܾÍÊÇ·ÖÀë״̬µÄÐÐΪ£¬Í¨¹ýά»¤×´Ì¬µÄ±ä»¯£¬À´µ÷Óò»Í¬×´Ì¬¶ÔÓ¦µÄ²»Í¬¹¦ÄÜ¡£Ò²¾ÍÊÇ˵£¬×´Ì¬ºÍÐÐΪÊÇÏà¹ØÁªµÄ£¬ËüÃǵĹØÏµ¿ÉÒÔÃèÊöΪ£º×´Ì¬¾ö¶¨ÐÐΪ¡£

¡¡¡¡ÓÉÓÚ״̬ÊÇÔÚÔËÐÐÆÚ±»¸Ä±äµÄ£¬Òò´ËÐÐΪҲ»áÔÚÔËÐÐÆÚ¸ù¾Ý״̬µÄ¸Ä±ä¶ø¸Ä±ä¡£

¡¡¡¡¡ñ¡¡¡¡ÐÐΪµÄƽÐÐÐÔ

¡¡¡¡×¢ÒâÆ½ÐÐÏß¶ø²»ÊÇÆ½µÈÐÔ¡£ËùνƽÐÐÐÔÖ¸µÄÊǸ÷¸ö״̬µÄÐÐΪËù´¦µÄ²ã´ÎÊÇÒ»ÑùµÄ£¬Ï໥¶ÀÁ¢µÄ¡¢Ã»ÓйØÁªµÄ£¬ÊǸù¾Ý²»Í¬µÄ״̬À´¾ö¶¨µ½µ××߯½ÐÐÏßµÄÄÄÒ»Ìõ¡£ÐÐΪÊDz»Í¬µÄ£¬µ±È»¶ÔÓ¦µÄʵÏÖÒ²ÊDz»Í¬µÄ£¬Ï໥֮¼äÊDz»¿ÉÌæ»»µÄ¡£

\

¡¡¡¡¶øÆ½µÈÐÔÇ¿µ÷µÄÊÇ¿ÉÌæ»»ÐÔ£¬´ó¼ÒÊÇͬһÐÐΪµÄ²»Í¬ÃèÊö»òʵÏÖ£¬Òò´ËÔÚͬһ¸öÐÐΪ·¢ÉúµÄʱºò£¬¿ÉÒÔ¸ù¾ÝÌõ¼þÌôÑ¡ÈÎÒâÒ»¸öʵÏÖÀ´½øÐÐÏàÓ¦µÄ´¦Àí¡£

\

¡¡¡¡´ó¼Ò¿ÉÄܻᷢÏÖ״̬ģʽµÄ½á¹¹ºÍ²ßÂÔģʽµÄ½á¹¹ÍêȫһÑù£¬µ«ÊÇ£¬ËüÃǵÄÄ¿µÄ¡¢ÊµÏÖ¡¢±¾ÖÊÈ´ÊÇÍêÈ«²»Ò»ÑùµÄ¡£»¹ÓÐÐÐΪ֮¼äµÄÌØÐÔÒ²ÊÇ״̬ģʽºÍ²ßÂÔģʽһ¸öºÜÖØÒªµÄÇø±ð£¬×´Ì¬Ä£Ê½µÄÐÐΪÊÇÆ½ÐÐÐԵ쬲»¿ÉÏà»¥Ìæ»»µÄ£»¶ø²ßÂÔģʽµÄÐÐΪÊÇÆ½µÈÐԵģ¬ÊÇ¿ÉÒÔÏà»¥Ìæ»»µÄ¡£

¡¡¡¡¡ñ ¡¡¡¡»·¾³ºÍ״̬´¦Àí¶ÔÏó

¡¡¡¡ÔÚ״̬ģʽÖУ¬»·¾³(Context)ÊdzÖÓÐ״̬µÄ¶ÔÏ󣬵«ÊÇ»·¾³(Context)×ÔÉí²¢²»´¦Àí¸ú״̬Ïà¹ØµÄÐÐΪ£¬¶øÊǰѴ¦Àí״̬µÄ¹¦ÄÜίÍиøÁË״̬¶ÔÓ¦µÄ״̬´¦ÀíÀàÀ´´¦Àí¡£

¡¡¡¡ÔÚ¾ßÌåµÄ״̬´¦ÀíÀàÖо­³£ÐèÒª»ñÈ¡»·¾³(Context)×ÔÉíµÄÊý¾Ý£¬ÉõÖÁÔÚ±ØÒªµÄʱºò»á»Øµ÷»·¾³(Context)µÄ·½·¨£¬Òò´Ë£¬Í¨³£½«»·¾³(Context)×ÔÉíµ±×÷Ò»¸ö²ÎÊý´«µÝ¸ø¾ßÌåµÄ״̬´¦ÀíÀà¡£

¡¡¡¡¿Í»§¶ËÒ»°ãÖ»ºÍ»·¾³(Context)½»»¥¡£¿Í»§¶Ë¿ÉÒÔÓÃ״̬¶ÔÏóÀ´ÅäÖÃÒ»¸ö»·¾³(Context)£¬Ò»µ©ÅäÖÃÍê±Ï£¬¾Í²»ÔÙÐèÒªºÍ״̬¶ÔÏó´ò½»µÀÁË¡£¿Í»§¶Ëͨ³£²»¸ºÔðÔËÐÐÆÚ¼ä״̬µÄά»¤£¬Ò²²»¸ºÔð¾ö¶¨ºóÐøµ½µ×ʹÓÃÄÄÒ»¸ö¾ßÌåµÄ״̬´¦Àí¶ÔÏó¡£

×÷Õߣºm13666368773