python设计模式大全

这篇文章主要介绍了python设计模式,通过简单的代码实现了Python常见的各种设计模式,包括桥接模式、观测者模式、适配器模式、工厂模式、单例模式等,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...