第六天 結構型模式 修飾器模式

2021-08-23 12:42:50 字數 1127 閱讀 9957

零、修飾器模式

當我們相對乙個物件新增新功能的時候,無非就是下面這三種方法:

一、身邊的例子

二、什麼情況下使用

三、應用案例

import functools

defmemoize

(fn):

known = dict()

@functools.wraps(fn)

defmemoizer

(*args):

if args not

in known:

known[args] = fn(*args)

return known[args]

return memoizer

@memoize

defnsum

(n):

''' 返回前n個數字的和

:param n:

:return:

'''assert (n >= 0), 'n must be >=0'

return

0if n == 0

else n + nsum(n - 1)

@memoize

deffibonacci

(n):

''' 返回斐波那契額數列的第n個數

:param n:

:return:

'''assert (n >= 0), 'n must be >=0'

return n if n in (0, 1) else fibonacci(n - 1) + fibonacci(n - 2)

if __name__ == '__main__':

from timeit import timer

measure = [,]

for m in measure:

t = timer('{}'.format(m['exec']), 'from __main__ import {}'.format(m['import']))

print(

'name:{},doc:{},executing:{},time:{}'.format(m['func'].__name__, m['func'].__doc__, m['exec'], t.timeit()))

建立型模式,結構型模式,結構型模式

為了閱讀方便,本文使用 全文手工轉換 轉換內容 本文採用電腦和資訊科技 顯示 關閉 字詞轉換 說明 字詞轉換是中文維基的一項自動轉換,目的是通過電腦程式自動消除繁簡 地區詞等不同用字模式的差異,以達到閱讀方便。字詞轉換包括全域性轉換和手動轉換,本說明所使用的標題轉換和全文轉換技術,都屬於手動轉換。如...

結構型模式 裝飾器模式

為已有的物件新增新的功能 新增新的方法到物件所屬的類中 使用組合創造新的物件 使用繼承創造子類 組合 繼承 新增新方法 python中我們可以使用內建的裝飾器特性來實現對類,方法的擴充套件,而無需使用繼承。用裝飾器來實現程式中的橫切關注點 應用中通用的部件,可以在程式中被廣泛使用的 推薦使用func...

結構型模式

結構型模式可以分為類結構型模式和物件結構型模式 類結構型模式關心類的組合,由多個類可以組合成乙個更大的系統,在類結構型模式中一般只存在繼承關係和實現關係。物件結構型模式關心類與物件的組合,通過關聯關係使得在乙個類中定義另乙個類的例項物件,然後通過該物件呼叫其方法。根據 合成復用原則 在系統中盡量使用...