此前已經將創造型模式、結構性模式分享了,後面將分享模式設計中的另一種典型模式:行為型模式。
創造型模式是解決實體的生成問題、結構性模式是為了解決實體的組合、搭配問題 ,而行為型設計模式的出現是為了解決不同實體通訊的問題。
直譯器模式:開發者自定義一種「有內涵」的語言(或者叫字串),並設定相關的解釋規則,輸入該字串後可以輸出公認的解釋,或者執行程式可以理解的動作。這種模式被用在 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...