zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    网络时间校对
    OleVariant的本质
    GIT生成SSHKEY公钥放到服务器免密登录
    git 清除所有untracked file
    Linux命令 cat命令
    Linux如何通过命令查看日志文件的某几行(中间几行或最后几行)
    Git提交(PUSH)时记住密码 不用每次都输入密码
    arcgis10 arcmap10插件监控打开和保存文档
    arcmap10插件必看网页
    arcgis分解每一个部分为一个对象
  • 原文地址:https://www.cnblogs.com/zijiyanxi/p/5273247.html
Copyright © 2011-2022 走看看