本文实例讲述了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程序设计有所帮助。
新闻热点
疑难解答
图片精选