#!/usr/bin/env python
# -*- coding:utf-8
class HttpBase:
def get(self):
psss
class Http1(HttpBase):
print 'http1'
class Http2(HttpBase):
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):
self.httpobj = Http1()
print 'A notify', k
print 'show a'
class BaseB(Base):
self.httpobj = Http2()
print 'B notify', k
print 'show b'
#观测者模式
class Observer:
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:
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')
欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 572064792 | Nodejs:329118122 做人要厚道,转载请注明出处!
本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sunshine-anycall/archive/2012/07/04/2575513.html,如需转载请自行联系原作者