外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。外观模式通过提供一个更为简单的接口来隐藏内部系统的复杂性。
class Leg(object):
def __init__(self, name):
self.name = name
def forward(self):
print self.name
class WalkingDrone(object):
def __init__(self, name):
self.name = name
self.frontrightleg = Leg('Front Right Leg')
self.frontleftleg = Leg('Front Left Leg')
self.backrightleg = Leg('Back Right Leg')
self.backleftleg = Leg('Back Left Leg')
def walk(self):
print "\nmoving "
self.frontrightleg.forward()
self.backleftleg.forward()
print "\nmoving "
self.frontleftleg.forward()
self.backrightleg.forward()
def run(self):
print "\nmoving "
self.frontrightleg.forward()
self.frontleftleg.forward()
print "\nmoving "
self.backrightleg.forward()
self.backleftleg.forward()
wd = WalkingDrone("RoboDrone" )
print("\nwalking")
wd.walk()
print("\nrunning")
wd.run()
上面的例子中WalkingDrone
类隐藏了Leg
类的复杂同步操作,提供了一个更为简单的接口。
输出为:
walking
moving
Front Right Leg
Back Left Leg
moving
Front Left Leg
Back Right Leg
running
moving
Front Right Leg
Front Left Leg
moving
Back Right Leg
Back Left Leg