裝飾模式(python)

2021-05-28 11:36:03 字數 1316 閱讀 3763

裝飾模式:動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。

應用場景:適用於 "新加入的功能僅僅是為了滿足一些只在某些特定情況下才會執行的需求「。

優點:1、把類中的裝飾功能從類中去除,簡化原有的類。

2、裝飾模式把每個要裝飾的功能放在單獨的裝飾類中,並讓這個裝飾類包裝它所要裝飾的物件。因此,當需要執行特殊行為時,客戶**就可以在執行時根據需要有選擇地、按順序地使用裝飾功能包裝物件。

#encoding=utf-8

##by panda

#修飾模式

def printinfo(info):

print unicode(info, 'utf-8').encode('gbk')

class person():

name = ""

def __init__(self, name):

self.name = name;

return;

def show(self):

printinfo("裝扮好的%s" % self.name)

class finery(person):

component = none

def __init__(self):

return;

def decorate(self, component):

self.component = component

def show(self):

if(none != self.component):

self.component.show()

class tshirts(finery):

def show(self):

printinfo("大t恤")

self.component.show()

class bigtrouser(finery):

def show(self):

printinfo("褲子")

self.component.show()

def clientui():

xc = person("小菜")

bt = bigtrouser()

ts = tshirts()

bt.decorate(xc)

ts.decorate(bt)

ts.show()

return

if __name__ == '__main__':

clientui();

類圖如下:

Python 裝飾模式

裝飾模式,動態地給乙個物件新增一些額外得職責,就增加功能來說,裝飾模式比生成子類更為靈活。裝飾模式結構圖 開發過程中什麼時候會用到裝飾模式 在系統需要新功能的時候,是向舊的類中新增新的 這些新的 通常裝飾了原有類的核心職責或主要行為。這樣子做的好處,有效地把類的核心職責和裝飾功能區分開了。參照uml...

Python設計模式 裝飾模式

有時為了給某個物件而不是給整個類新增乙個功能,使用繼承機制是新增功能的乙個有效途徑,但是不夠靈活,使用者不能控制對元件加邊框的方式和時機,並且會導致子類膨脹。一種較為靈活的方式就是將元件嵌入另乙個物件中,這個嵌入的物件叫做裝飾。裝飾模式 動態地給乙個物件增加一些額外的職責。就擴充套件功能而言,裝飾模...

python 裝飾者模式

裝飾者模式 裝飾器 本身就是第乙個函式 作用 裝飾其他函式,為其他函式提供附加功能 原則 不能修改被裝飾的函式的源 不能修改被裝飾的函式的呼叫方式 裝飾器對裝飾的函式是完全透明的,對呼叫方也是不可知的 實現裝飾器的知識儲備 1.函式即 變數 2.高階函式 3.巢狀函式 高階函式 巢狀函式 裝飾器 i...