python 设计模式-解释器模式

解释器模式主要用于语言语法的解析,我们平常开发中用的比较少。

示例代码如下:

#!/usr/bin/env python
#coding: utf-8
from abc import ABCMeta, abstractmethod


class Expression(metaclass=ABCMeta):
    @abstractmethod
    def interpret(self, context):
        pass


class AtomExpression(Expression):
    def __init__(self, base):
        self._base = base

    def interpret(self, context):
        return context == self._base


class OrExpression(Expression):
    def __init__(self, expr1, expr2):
        self._expr1 = expr1
        self._expr2 = expr2

    def interpret(self, context):
        return self._expr1.interpret(context) or self._expr2.interpret(context)


class AndExpression(Expression):
    def __init__(self, expr1, expr2):
        self._expr1 = expr1
        self._expr2 = expr2

    def interpret(self, context):
        return self._expr1.interpret(context) and self._expr2.interpret(context)


if __name__ == '__main__':
    a = AtomExpression('yes')
    b = AtomExpression('no')
    oe = OrExpression(a, b)
    ae = AndExpression(a, b)
    print('a: {}, b: {}, oe: {}, ae: {}'.format(a.interpret('yes'), b.interpret('no'), oe.interpret('yes'), ae.interpret('yes')))

输出:

a: True, b: True, oe: True, ae: False
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值