python设计模式大全

899次阅读  |  发布于5年以前

本文实例讲述了python常见的设计模式。分享给大家供大家参考,具体如下:


    # #!/usr/bin/env python
    # # -*- coding:utf-8
    #
    # class HttpBase:
    #   def get(self):
    #     psss
    # class Http1(HttpBase):
    #   def get(self):
    #     print 'http1'
    # class Http2(HttpBase):
    #   def get(self):
    #     print 'http2'
    #
    #
    # class Base:
    #   def __init__(self):
    #     self.httpobj = None
    #   def http(self):
    #     self.httpobj.get()
    #   def compute(self):
    #     self.http()
    #     self.show()
    #   #虚函数
    #   def show(self):
    #     pass
    #   def notify(self, k):
    #     print 'notify', k
    #
    #
    # #桥接模式,通过A,B 关联不同的http1和http2
    # class BaseA(Base):
    #   def __init__(self):
    #     self.httpobj = Http1()
    #   def notify(self, k):
    #     print 'A notify', k
    #   def show(self):
    #     print 'show a'
    #
    # class BaseB(Base):
    #   def __init__(self):
    #     self.httpobj = Http2()
    #   def notify(self, k):
    #     print 'B notify', k
    #   def show(self):
    #     print 'show b'
    #
    # #观测者模式
    # class Observer:
    #   def __init__(self):
    #     self.listOB = []
    #   def register(self, obj):
    #     self.listOB.append(obj)
    #   def notify(self):
    #     for obj in self.listOB:
    #       obj.notify(len(self.listOB))
    #
    # #适配器模式
    # class B1:
    #   def http(self):
    #     BaseB().http()
    # #工厂模式
    # class Factory:
    #   def CreateA(self):
    #     return BaseA()
    #   def CreateB(self):
    #     return BaseB()
    #
    #
    # #单例模式
    # class Logger(object):
    #   log = None
    #   @staticmethod
    #   def new():
    #
    #     import threading
    #     #线程安全
    #     mylock = threading.RLock()
    #     mylock.acquire()
    #     if not Logger.log:
    #       Logger.log = Logger()
    #     mylock.release()
    #
    #     return Logger.log
    #   def write(self, v):
    #     print 'Logger ', v
    #
    # if __name__ == "__main__":
    #   a = Factory().CreateA()
    #   b = Factory().CreateB()
    #
    #   objS = Observer()
    #   objS.register(a)
    #   objS.register(b)
    #
    #   a.compute()
    #   b.compute()
    #   objS.notify()
    #
    #   b1 = B1()
    #   b1.http()
    #
    #   Logger.new().log.write('v')

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8