国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python設(shè)計(jì)模式之裝飾模式實(shí)例詳解

2020-02-16 00:47:33
字體:
供稿:網(wǎng)友

本文實(shí)例講述了Python設(shè)計(jì)模式之裝飾模式。分享給大家供大家參考,具體如下:

裝飾模式(Decorator Pattern):動(dòng)態(tài)的給一個(gè)對象添加一些額外的職責(zé),就增加功能來說,裝飾模式比生成子類更為靈活.

下面是一個(gè)給人穿衣服的過程,使用裝飾模式:

#!/usr/bin/env python# -*- coding:utf-8 -*-__author__ = 'Andy'"""大話設(shè)計(jì)模式設(shè)計(jì)模式——裝飾模式裝飾模式(Decorator Pattern):動(dòng)態(tài)的給一個(gè)對象添加一些額外的職責(zé),就增加功能來說,裝飾模式比生成子類更為靈活.特點(diǎn): 有效的把類的核心職責(zé)和裝飾功能區(qū)分開,而且可以去除相關(guān)類中重復(fù)的裝飾邏輯"""# 定義對象接口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ì)如下圖:

通過一個(gè)個(gè)繼承自裝飾類Finery的對象,實(shí)現(xiàn)給Person類賦予職責(zé)的功能,Person類并不會感知Finery的存在

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》

希望本文所述對大家Python程序設(shè)計(jì)有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 洱源县| 新乡县| 安顺市| 贵港市| 沙坪坝区| 福鼎市| 信阳市| 合作市| 肃宁县| 德钦县| 孝昌县| 巢湖市| 靖边县| 兰考县| 武山县| 石首市| 凭祥市| 宁强县| 南皮县| 读书| 原平市| 岢岚县| 昭苏县| 赤城县| 尼木县| 威远县| 阳春市| 通许县| 贵德县| 沂南县| 富民县| 三明市| 三台县| 尼玛县| 交城县| 左云县| 富蕴县| 楚雄市| 丹棱县| 敖汉旗| 慈利县|