77·¶ÎÄÍø - רҵÎÄÕ·¶ÀýÎĵµ×ÊÁÏ·ÖÏíÆ½Ì¨

Èí¼þ¹¤³ÌStrategy²ßÂÔģʽ(2)

À´Ô´£ºÍøÂçÊÕ¼¯ ʱ¼ä£º2021-09-24 ÏÂÔØÕâÆªÎĵµ ÊÖ»ú°æ
˵Ã÷£ºÎÄÕÂÄÚÈݽö¹©Ô¤ÀÀ£¬²¿·ÖÄÚÈÝ¿ÉÄܲ»È«£¬ÐèÒªÍêÕûÎĵµ»òÕßÐèÒª¸´ÖÆÄÚÈÝ£¬ÇëÏÂÔØwordºóʹÓá£ÏÂÔØwordÓÐÎÊÌâÇëÌí¼Ó΢ÐźÅ:»òQQ£º ´¦Àí£¨¾¡¿ÉÄܸøÄúÌṩÍêÕûÎĵµ£©£¬¸ÐлÄúµÄÖ§³ÖÓëÁ½⡣µã»÷ÕâÀï¸øÎÒ·¢ÏûÏ¢

£¨4£©½á¹¹

StrategyµÄ½á¹¹ÈçÏÂͼËùʾ

ÏÂÃæ¼òÒª½éÉÜÒ»ÏÂÒÔÉÏÀàͼÖи÷¸öÀàµÄ×÷Óãº

(1) ContextÀàΪÉÏÏÂÎÄÀ࣬¸ºÔðά»¤ºÍ¸üÐÂËã·¨ËùÒª´¦ÀíµÄ»·¾³ºÍÊý¾Ý¡£Æ©Èç¶ÔÓÚͼÏóѹ

ËõÀ´Ëµ£¬Context¸ºÔðÊý¾ÝµÄÌáÈ¡¡¢Ñ¹Ëõ²ÎÊýµÄ»ñµÃÒÔ¼°Ñ¹ËõÒÔºóÉÆºó¹¤×÷µÈµÈ£» (2) Strategy´ú±í³éÏóµÄËã·¨£¬Æ©Èç¶ÔÓÚͼÏóѹËõÀ´Ëµ£¬Ëü´ú±íµÄ¾ÍÊÇͼÏóѹËõËã·¨£¬ÖÁÓÚ¾ßÌåÄÇÖÖѹËõ£¿JEPGѹËõ»¹ÊÇGIFѹËõ£¬StrategyÀ಻¹ØÐÄ£¬ËüֻΪ¾ßÌåµÄͼÏóѹËõËã·¨ÌṩͳһµÄ½Ó¿Ú£»

(3)ConcreteStrategyA¡¢ConcreteStrategyB¡¢ConcreteStrategyCÔò´ú±íÌØ±ð¾ßÌåµÄËã·¨¡£ ContextÀàά»¤StrategyµÄÒ»¸öÒýÓ㨻òÕßÖ¸Õ룩¡£Ò»µ©ContextËùά»¤µÄÉÏÏÂÎÄÓб䣨ƩÈçÊäÈëÊý¾ÝÓб仯£©£¬Ëü¾Í½«Õâ¸öÖ°Ôðת·¢¸øËüµÄStrategy¶ÔÏó¡£ContextµÄ¿Í»§Öƶ¨Ó¦¸ÃʹÓÃÄÄÒ»ÖÖStrategy£¨Ëã·¨£©µÄ·½Ê½ÊÇÖ±½Ó½«ËüÏëÒªµÄ¾ßÌåµÄ

Strategy £¨ConcreteStrategyA¡¢ConcreteStrategyB¡¢ConcreteStrategyC £©×°ÈëCompositionÖС£

£¨5£©ÊµÓÃÐÔ

µ±´æÔÚÒ»ÏÂÇé¿öʱ£¬ÊʺÏʹÓÃStrategyģʽ

(a) Ðí¶àÏà¹ØµÄÀà½ö½öÊÇÐÐΪÉϵIJîÒì¡£¡°²ßÂÔ¡±ÌṩÁËÒ»ÖÖÓöà¸öÐÐΪÖеÄÒ»¸öÐÐΪÀàÅäÖÃÒ»¸öÀàµÄ·½·¨£»

(b) ÐèҪʹÓÃÒ»¸öËã·¨µÄ²»Í¬µÄ±äÌå¡£ÀýÈ磬Äú¿ÉÄܻᶨÒåһЩ·´Ó³²»Í¬¿Õ¼ä/ʱ¼äȨºâµÄËã·¨¡£µ±ÕâЩ±äÌåʵÏÖΪһ¸öËã·¨µÄÀà²ã´Îʱ£¬¿ÉÒÔʹÓòßÂÔģʽ£»

(c) Ë㷨ʹÓÿͻ§²»Ó¦¸ÃÖªµÀµÄ¾ßÌåµÄʵÏÖ²½Ö裬¿ÉÒÔʹÓòßÂÔģʽÒÔÃⱩ¶¸´Ôӵġ¢ÓëËã·¨Ïà¹ØµÄÊý¾Ý½á¹¹£»

(d) Ò»¸öÀඨÒåÁ˶àÖÖÐÐΪ£¬²¢ÇÒΪÕâЩÐÐΪÔÚÕâ¸öÀàµÄ²Ù×÷ÖÐÒÔ¶à¸öÌõ¼þÓï¾äµÄÐÎʽ³öÏÖÏà¹ØµÄÌõ¼þ·ÖÖ§ÒÆÈëËüÃǸ÷×ÔµÄStrategyÀàÖУ¬ÒÔ´úÌæÕâЩÓï¾ä¡£ £¨6£©×÷ÓÃ

²ßÂÔģʽ½«ÀàÖеÄËã·¨·ÖÀë³ö·ÅÔÚÒ»¸öµ¥¶ÀµÄÀàÖС£²»Í¬µÄËã·¨ÊÊÓÃÓÚ²»Í¬µÄÎÊÌâ¡£Èç¹ûËùÓеÄËã·¨¶¼¼¯ÖÐÔÚÒ»¸öÀàÖж¨»áµ¼Ö´øÓÐÌõ¼þÑ¡ÔñµÄÔÓÂҵĴúÂë¡£²ßÂÔģʽʹµÃ¿Í»§¶ËÄܹ»ÇáËɵĴÓһϵÁÐËã·¨ÖÐÕÒ³öÊʺÏ×Ô¼ºµÄËã·¨¡£ÕâЩËã·¨¿ÉÒÔ²»ÒÀÀµËûÃÇÓõ½µÄÊý¾ÝÀ´±íʾ¡£

(7)´úÂëʵÏÖ

using System;

using System.Collections.Generic; using System.Linq; using System.Text;

namespace Strategy {

// The Context class Context {

// Context state

public const int start = 5; public int Counter = 5;

// Strategy aggregation

IStrategy strategy = new Strategy1();

// Algorithm invokes a strategy method public int Algorithm() {

return strategy.Move(this); }

// Changing strategies

public void SwitchStrategy() {

if (strategy is Strategy1) strategy = new Strategy2(); else

strategy = new Strategy1(); } }

// Strategy interface interface IStrategy {

int Move (Context c); }

// Strategy 1

class Strategy1 : IStrategy {

public int Move (Context c) {

return ++c.Counter; } }

// Strategy 2

class Strategy2 : IStrategy {

public int Move (Context c) {

return --c.Counter ; } }

class Program {

static void Main(string[] args) {

Context context = new Context(); context.SwitchStrategy(); Random r = new Random(37);

for (int i=Context.start; i<=Context.start+15; i++)

{

if (r.Next(3) == 2) {

Console.Write("|| "); context.SwitchStrategy(); }

Console.Write(context.Algorithm() +" "); }

Console.WriteLine(); Console.ReadLine(); } } }

Êä³ö£º /* Output

4 || 5 6 7 || 6 || 7 8 9 10 || 9 8 7 6 || 7 || 6 5 */

×ܽá

StrategyģʽµÄÒªµã£º

1¡¢Strategy¼°Æä×ÓÀàΪ×é¼þÌṩÁËһϵÁпÉÖØÓõÄËã·¨£¬´Ó¶ø¿ÉÒÔʹµÃÀàÐÍÔÚÔËÐÐʱ·½±ãµØ¸ù¾ÝÐèÒªÔÚ¸÷¸öËã·¨Ö®¼ä½øÐÐÇл»¡£Ëùν·â×°Ëã·¨£¬Ö§³ÖËã·¨µÄ±ä»¯¡£

2¡¢StrategyģʽÌṩÁËÓÃÌõ¼þÅжÏÓï¾äÒÔÍâµÄÁíÒ»ÖÐÑ¡Ôñ£¬Ïû³ýÌõ¼þÅжÏÓï¾ä£¬¾ÍÊÇÔÚ½âñîºÏ¡£º¬ÓÐÐí¶àÌõ¼þÅжÏÓï¾äµÄ´úÂëͨ³£¶¼ÐèÒªStrategyģʽ¡£

3¡¢StrategyģʽÒÔË㷨ΪÖÐÐÄ£¬¿ÉÒÔºÍFactory MethodÁªºÏʹÓã¬ÔÚ¹¤³§ÖÐʹÓÃÅäÖÆÎļþ¶Ô±ä»¯µÄµã½øÐж¯Ì¬µÄÅäÖá£ÕâÑù¾Íʹ±ä»¯·Åµ½ÁËÔËÐÐʱ¡£ 4¡¢Strategyģʽ¼¯ÖÐÔÚËã·¨µÄ·â×°ÉÏ

°Ù¶ÈËÑË÷¡°77cn¡±»ò¡°Ãâ·Ñ·¶ÎÄÍø¡±¼´¿ÉÕÒµ½±¾Õ¾Ãâ·ÑÔĶÁÈ«²¿·¶ÎÄ¡£Êղر¾Õ¾·½±ãÏ´ÎÔĶÁ£¬Ãâ·Ñ·¶ÎÄÍø£¬Ìṩ¾­µäС˵¹«ÎñÔ±¿¼ÊÔÈí¼þ¹¤³ÌStrategy²ßÂÔģʽ(2)ÔÚÏßÈ«ÎÄÔĶÁ¡£

Èí¼þ¹¤³ÌStrategy²ßÂÔģʽ(2).doc ½«±¾ÎĵÄWordÎĵµÏÂÔØµ½µçÄÔ£¬·½±ã¸´ÖÆ¡¢±à¼­¡¢ÊղغʹòÓ¡ ÏÂÔØÊ§°Ü»òÕßÎĵµ²»ÍêÕû£¬ÇëÁªÏµ¿Í·þÈËÔ±½â¾ö£¡
±¾ÎÄÁ´½Ó£ºhttps://www.77cn.com.cn/wenku/gongwuyuan/1249214.html£¨×ªÔØÇë×¢Ã÷ÎÄÕÂÀ´Ô´£©

Ïà¹ØÍÆ¼ö£º

Copyright © 2008-2022 Ãâ·Ñ·¶ÎÄÍø °æÈ¨ËùÓÐ
ÉùÃ÷ :±¾ÍøÕ¾×ðÖØ²¢±£»¤ÖªÊ¶²úȨ£¬¸ù¾Ý¡¶ÐÅÏ¢ÍøÂç´«²¥È¨±£»¤ÌõÀý¡·£¬Èç¹ûÎÒÃÇ×ªÔØµÄ×÷Æ·ÇÖ·¸ÁËÄúµÄȨÀû,ÇëÔÚÒ»¸öÔÂÄÚ֪ͨÎÒÃÇ£¬ÎÒÃǻἰʱɾ³ý¡£
¿Í·þQQ£º ÓÊÏ䣺tiandhx2@hotmail.com
ËÕICP±¸16052595ºÅ-18
¡Á ×¢²á»áÔ±Ãâ·ÑÏÂÔØ£¨ÏÂÔØºó¿ÉÒÔ×ÔÓɸ´ÖƺÍÅŰ棩
×¢²á»áÔ±ÏÂÔØ
ȫվÄÚÈÝÃâ·Ñ×ÔÓɸ´ÖÆ
×¢²á»áÔ±ÏÂÔØ
ȫվÄÚÈÝÃâ·Ñ×ÔÓɸ´ÖÆ
×¢£ºÏÂÔØÎĵµÓпÉÄÜ¡°Ö»ÓÐĿ¼»òÕßÄÚÈݲ»È«¡±µÈÇé¿ö£¬ÇëÏÂÔØÖ®Ç°×¢Òâ±æ±ð£¬Èç¹ûÄúÒѸ¶·ÑÇÒÎÞ·¨ÏÂÔØ»òÄÚÈÝÓÐÎÊÌ⣬ÇëÁªÏµÎÒÃÇЭÖúÄã´¦Àí¡£
΢ÐÅ£º QQ£º