python設計模式(十三) 直譯器模式

2021-09-10 22:40:42 字數 1163 閱讀 6949

此前已經將創造型模式、結構性模式分享了,後面將分享模式設計中的另一種典型模式:行為型模式。

創造型模式是解決實體的生成問題、結構性模式是為了解決實體的組合、搭配問題 ,而行為型設計模式的出現是為了解決不同實體通訊的問題。

直譯器模式:開發者自定義一種「有內涵」的語言(或者叫字串),並設定相關的解釋規則,輸入該字串後可以輸出公認的解釋,或者執行程式可以理解的動作。這種模式被用在 sql 解析、符號處理引擎等

直譯器模式要實現兩個核心角色:

# -*- coding:utf-8 -*-

import time

import datetime

"""實現一段簡單的中文程式設計"""

class code:

"""自定義語言"""

def __init__(self, text=none):

self.text = text

class interpreterbase:

"""自定**釋器基類"""

def run(self, code):

pass

class interpreter(interpreterbase):

"""實現直譯器方法,實現終結符表示式字典"""

def run(self, code):

code = code.text

code_dict =

print(code_dict.get(code))

if __name__ == '__main__':

test = code()

test.text = '獲取當前時間戳'

data1 = interpreter().run(test)

test.text = '獲取當前日期'

data2 = interpreter().run(test)

-----------------

1550156061.1181707

2019-02-14 22:54:21

上面是個很簡單的案例,同時我們也可以增加不同語言和不同的功能。

但實際上該模式的應用場景比較少

python設計模式(十三) 直譯器模式

此前已經將創造型模式 結構性模式分享了,後面將分享模式設計中的另一種典型模式 行為型模式。創造型模式是解決實體的生成問題 結構性模式是為了解決實體的組合 搭配問題 而行為型設計模式的出現是為了解決不同實體通訊的問題。直譯器模式 開發者自定義一種 有內涵 的語言 或者叫字串 並設定相關的解釋規則,輸入...

設計模式In Java 十三 直譯器模式

直譯器模式 interpreter pattern 定義乙個語言的文法,並且建立乙個直譯器來解釋該語言中的句子,這裡的 語言 是指使用規定格式和語法的 直譯器模式是一種類行為型模式。光看定義或名字就能明白,解釋其模式就是將一定的文法解釋成程式可以理解的結構,然後輸出結果,比如輸入乙個四則運算表示式計...

Python與設計模式 直譯器模式

要開發乙個自動識別譜子的結他模擬器,達到錄入譜即可按照譜發聲的效果。除了發聲裝置外 假設已完成 最重要的就是讀譜和譯譜能力了。分析其需求,整個過程大致上分可以分為兩部分 根據規則翻譯譜的內容 根據翻譯的內容演奏。我們用乙個直譯器模型來完成這個功能。class playcontext play tex...