外观模式

外观模式(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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏葡萄城控件技术团队

实战使用Axure设计App,使用WebStorm开发(4) – 实现页面UI

系列文章 实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求 实战使用Axure设计App,使用WebStorm开发(2)...

22260
来自专栏宋凯伦的技术小栈

Angular JS + Express JS入门搭建网站

  3月份开始,接到了新的任务,跟UI开发有关,用的是Angular JS,Express JS等技术。于是周末顺便学习下新技术。   组里产品UI架构如下: ...

29960
来自专栏前端人人

React第三方组件4(状态管理之Reflux的使用⑤异步操作)

本教程总共5篇,每日更新一篇,请关注我们!你可以进入历史消息查看以往文章,也敬请期待我们的新文章! 1、React第三方组件4(状态管理之Reflux的使用①...

30230
来自专栏Python小屋

Python批量导入图片生成PowerPoint 2007+文件

使用方法:安装扩展库python-pptx,然后把上文中抓取的图片和本程序放在同一个文件夹。 import os import pptx from pptx.u...

32130
来自专栏技术博文

Fiddler 跟踪数据包

随着 HTML5 的急速增长,现在越来越多的人,开始涉及到移动终端的 Web 开发领域,但手机端始终没有 PC 端这么多的调试工具。即使 PC 端浏览器模拟 u...

41850
来自专栏小尘哥的专栏

使用bootstrap-Validator校验表单

前端UI框架选择bootstrap,那么bootstrap-Validator作为表单校验是一个不错的选择。

27130
来自专栏菜鸟计划

webpack学习(四)extract-text-webpack-plugin插件

二、extract-text-webpack-plugin插件 从 bundle 中提取文本(CSS)到单独的文件 安装 npm install extract...

39860
来自专栏前端架构

再谈DOMContentLoaded与渲染阻塞—分析html页面事件与资源加载

浏览器的多线程中,有的线程负责加载资源,有的线程负责执行脚本,有的线程负责渲染界面,有的线程负责轮询、监听用户事件。

8620
来自专栏十月梦想

css3动画效果transition的用法

上述的例子的功能介绍:鼠标移入色块div,div的宽度则在3s内width变为500px;

8240
来自专栏web前端教室

《vue+vant+node+mongoDB+koa2》电商项目实战连载(5)

喔~~~,原来是这样,其实还是一些封装好的自定义组件。把上面的代码直接复制到vue的template中,

10220

扫码关注云+社区

领取腾讯云代金券