Python设计模式(4)-装饰模式

# coding=utf-8

# * 一般情况下,当一个基类写好之后,我们也许不愿意去改动,也不能改动,原因是
# * 这样的在项目中用得比较久的基类,一旦改动,也许会影响其他功能模块,但是,
# * 又要在该类上面添加功能。使用继承,当在A阶段,写出继承类,用过一段时间,发
# * 现又要添加新功能,于是又要从原始类或A阶段的类继承,周而复始,慢慢的,子类
# * 就越来越多,层级就越来越深。然而,事实上,在C阶段需要A阶段的功能,但不需要
# * B阶段的功能,在这种复杂情形下,继承就显得不灵活,于是想到了装饰模式。
#
# * 装饰模式:
# * 需要扩展一个类的功能,或给一个类增加附加责任
# * 需要动态地给一个对象增加功能,这些功能可以再动态地撤销。
# * 需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变得不现实。

class DbManager:
def __init__(self):
pass

def operate_db(self):
pass


class DecoratePatterns(DbManager):
dbmanager = None

def __init__(self):
pass

def decorate(self, dbmanager):
self.dbmanager = dbmanager

def operate_db(self):
if self.dbmanager:
self.dbmanager.operate_db()


class DbInsert(DecoratePatterns):
def operate_db(self):
print '插入操作'


class DbDel(DecoratePatterns):
def operate_db(self):
print '删除操作'


class DbUpdate(DecoratePatterns):
def operate_db(self):
print '更新操作'


if __name__ == "__main__":
dm = DbManager()
db = DbInsert()
print db.operate_db()
原文地址:https://www.cnblogs.com/zijiyanxi/p/5273247.html