ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

Behavioralģʽ֮Interpreterģʽ
2015-11-21 00:58:46 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:1´Î
Tags£ºBehavioral ģʽ Interpreter

1.Òâͼ

¸ø¶¨Ò»¸öÓïÑÔ£¬¶¨ÒåËüµÄÎÄ·¨µÄÒ»ÖÖ±íʾ£¬²¢¶¨ÒåÒ»¸ö½âÊÍÆ÷£¬Õâ¸ö½âÊÍÆ÷ʹÓøñíʾÀ´½âÊÍÓïÑÔÖеľä×Ó¡£

2.±ðÃû

ÎÞ

3.¶¯»ú

Èç¹ûÒ»ÖÖÌØ¶¨ÀàÐ͵ÄÎÊÌâ·¢ÉúµÄƵÂÊ×ã¹»¸ß£¬ÄÇô¿ÉÄܾÍÖµµÃ½«¸ÃÎÊÌâµÄ¸÷ÖÖʵÀý±íÊöΪһÖÖ¼òµ¥Óï¾äÖеľä×Ó¡£ÕâÑù¾Í¿ÉÒÔ¹¹½¨Ò»¸ö½âÊÍÆ÷£¬¸Ã½âÊÍÆ÷ͨ¹ý½âÊÍÕâЩ¾ä×ÓÀ´½â¾ö¸ÃÎÊÌâ¡£

4.ÊÊÓÃÐÔ

ÒÔÏÂÇé¿öʹÓÃInterpreterģʽ£º
µ±ÓÐÒ»ÖÖÓïÑÔÐèÒª½âÊÍÖ´ÐУ¬²¢ÇÒÄã¿ÉÒÔ½«¸ÃÓïÑÔÖеľä×Ó±íʾΪһ¸ö³éÏóÓï·¨Ê÷ʱ£¬¿ÉʹÓýâÊÍÆ÷Ä£ÐÍ¡£¶øµ±´æÔÚÒÔÏÂÇé¿öʱ¸ÃģʽЧ¹û×îºÃ¡£
- ¸ÃÎÄ·¨¼òµ¥¶ÔÓÚ¸´ÔÓµÄÎÄ·¨£¬ÎÄ·¨µÄÀà²ã´Î±äµÃÅÓ´ó¶øÎÞ·¨¹ÜÀí¡£´ËʱÓï·¨·ÖÎö³ÌÐòÉú³ÉÆ÷ÕâÑùµÄ¹¤¾ßÊǸüºÃµÄÑ¡Ôñ¡£ËûÃÇÎÞÐè¹¹½¨³éÏóÓï·¨Ê÷¼´¿É½âÊͱí´ïʽ£¬ÕâÑù¿ÉÒÔ½ÚÊ¡¿Õ¼ä¶øÇÒ»¹¿ÉÄܽÚʡʱ¼ä¡£
- ЧÂʲ»ÊÇÒ»¸ö¹Ø¼üÎÊÌ⣬×î¸ßЧµÄ½âÊÍÆ÷ͨ³£²»ÊÇͨ¹ýÖ±½Ó½âÊÍÓï·¨·ÖÎöÊ÷ʵÏֵ쬶øÊÇÊ×ÏȽ«ËûÃÇת»»³ÉÁíÒ»ÖÖÐÎ̬¡£ÀýÈ磬ÕýÔò±í´ïʽͨ³£±»×ª»»³É״̬»ú¡£µ«¼°Ê±ÔÚÕâÖÖÇé¿öÏ£¬×ª»¯Æ÷ÈÔ¿ÉÓýâÊÍÆ÷ģʽʵÏÖ£¬¸ÃģʽÈÔÊÇÓÐÓõġ£

5.½á¹¹

ÊÍÆ÷ģʽÊÇÎÒÃÇÔÝʱµÄ×îºóÒ»½²£¬Ò»°ãÖ÷ÒªÓ¦ÓÃÔÚOOP¿ª·¢ÖеıàÒëÆ÷µÄ¿ª·¢ÖУ¬ËùÒÔÊÊÓÃÃæ±È½ÏÕ­¡£
Interpreterģʽ

6.´úÂëʾÀý

ʵÏÖ´úÂ룺
ContextÀàÊÇÒ»¸öÉÏÏÂÎÄ»·¾³À࣬PlusºÍMinus·Ö±ðÊÇÓÃÀ´¼ÆËãµÄʵÏÖ£¬´úÂëÈçÏ£º

public interface Expression {
    public int interpret(Context context);
}

ʵÏÖÀà

public class Plus implements Expression {

    @Override
    public int interpret(Context context) {
        return context.getNum1()+context.getNum2();
    }
}

public class Minus implements Expression {

    @Override
    public int interpret(Context context) {
        return context.getNum1()-context.getNum2();
    }
}

ContextÀà

public class Context {

    private int num1;
    private int num2;

    public Context(int num1, int num2) {
        this.num1 = num1;
        this.num2 = num2;
    }

    public int getNum1() {
        return num1;
    }
    public void setNum1(int num1) {
        this.num1 = num1;
    }
    public int getNum2() {
        return num2;
    }
    public void setNum2(int num2) {
        this.num2 = num2;
    }


}

²âÊÔÀࣺ

public class Test {

    public static void main(String[] args) {

        // ¼ÆËã9+2-8µÄÖµ
        int result = new Minus().interpret((new Context(new Plus()
                .interpret(new Context(9, 2)), 8)));
        System.out.println(result);
    }
}

×îºóÊä³öÕýÈ·µÄ½á¹û£º3¡£
»ù±¾¾ÍÕâÑù£¬½âÊÍÆ÷ģʽÓÃÀ´×ö¸÷ÖÖ¸÷ÑùµÄ½âÊÍÆ÷£¬ÈçÕýÔò±í´ïʽµÈµÄ½âÊÍÆ÷µÈµÈ£¡

7.Ïà¹ØÄ£Ê½

Compositeģʽ£º³éÏóÓï·¨Ê÷ÊÇÒ»¸ö¸´ºÏģʽµÄʵÀý¡£ Flyweightģʽ£ºËµÃ÷ÁËÈçºÎÔÚ³éÏóÓï·¨Ê÷Öй²ÏíÖÕ½á·û¡£ Iteratorģʽ£º½âÊÍÆ÷¿ÉÓÃÒ»¸öµü´úÆ÷±éÀú¸Ã½á¹¹¡£ Visitorģʽ£º¿ÉÓÃÀ´ÔÚÒ»¸öÀàÖÐά»¤³éÏóÓï·¨Ê÷Öеĸ÷½ÚµãµÄÐÐΪ¡£

?

¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£º[Leetcode]-ReverseLinkedList ÏÂһƪ£ºUVA 10515£¨Çóm^nµÄ¸öλÊý£©

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ: