新聞中心
這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Python設(shè)計(jì)模式之裝飾模式的示例分析-創(chuàng)新互聯(lián)
這篇文章將為大家詳細(xì)講解有關(guān)Python設(shè)計(jì)模式之裝飾模式的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

具體如下:
裝飾模式(Decorator Pattern):動(dòng)態(tài)的給一個(gè)對(duì)象添加一些額外的職責(zé),就增加功能來(lái)說(shuō),裝飾模式比生成子類更為靈活.
下面是一個(gè)給人穿衣服的過(guò)程,使用裝飾模式:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
大話設(shè)計(jì)模式
設(shè)計(jì)模式——裝飾模式
裝飾模式(Decorator Pattern):動(dòng)態(tài)的給一個(gè)對(duì)象添加一些額外的職責(zé),就增加功能來(lái)說(shuō),裝飾模式比生成子類更為靈活.
特點(diǎn): 有效的把類的核心職責(zé)和裝飾功能區(qū)分開(kāi),而且可以去除相關(guān)類中重復(fù)的裝飾邏輯
"""
# 定義對(duì)象接口
class Person(object):
def __init__(self,name):
self.name = name
def show(self):
print "裝扮的%s"%self.name
#裝飾類
class Finery(Person):
def __init__(self):
pass
def Decorate(self,componet):
self.componet = componet
def show(self):
if self.componet != None:
self.componet.show()
#裝扮——T恤
class TShirts(Finery):
def __init__(self):
pass
def show(self):
print 'T恤'
self.componet.show()
#裝扮——大褲衩
class BigTrouser(Finery):
def __init__(self):
pass
def show(self):
print '大褲衩'
self.componet.show()
# 裝扮——人字拖
class FlipFlops(Finery):
def __init__(self):
pass
def show(self):
print '人字拖'
self.componet.show()
if __name__ == '__main__':
p = Person('Andy')
ff = FlipFlops()
bt = BigTrouser()
ts = TShirts()
ff.Decorate(p)
bt.Decorate(ff)
ts.Decorate(bt)
ts.show()運(yùn)行結(jié)果:
T恤
大褲衩
人字拖
裝扮的Andy
這幾個(gè)類的設(shè)計(jì)如下圖:

通過(guò)一個(gè)個(gè)繼承自裝飾類Finery的對(duì)象,實(shí)現(xiàn)給Person類賦予職責(zé)的功能,Person類并不會(huì)感知Finery的存在。
關(guān)于“Python設(shè)計(jì)模式之裝飾模式的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
文章題目:Python設(shè)計(jì)模式之裝飾模式的示例分析-創(chuàng)新互聯(lián)
文章地址:http://www.dlmjj.cn/article/deccdi.html


咨詢
建站咨詢
