Python设计模式之门面模式简单示例

yipeiwu_com5年前Python基础

本文实例讲述了Python设计模式之门面模式。分享给大家供大家参考,具体如下:

facade:建筑物的表面

门面模式是一个软件工程设计模式,主要用于面向对象编程。 一个门面可以看作是为大段代码提供简单接口的对象,就像类库。

门面模式被归入建筑设计模式。门面模式隐藏系统内部的细节和复杂度,给用户提供一个简单的接口,采用门面模式,用户能够使用简单的接口进行工作,而不用担心系统的复杂。

理解门面模式最重要的一点就是它提供的简单接口是系统的一部分。因此提供简单易用的功能要胜过完整的功能。

门面模式的优点是向用户提供的基础类的操作,在当前门面模式的实现下,是不会向用户提供可控的,定制化的接口。

基于以上原因,门面模式不是对子系统的封装,而是对可选的功能提供简单的接口

下面是用块图,对门面模式的解释:

1.在块图表中,我们有将计算机分成三种类来表示:CPU,Memory,HardDrive。

cpu类有一个方法是jump()和execute(),Memory类有方法,load(),HardDrive类有一个read()方法

2.我们有个一个门面类,Computer Class ,提供start()方法给用户。

3.当用户想要开启电脑系统的时候,它调用Computer类的start()方法.
一个简单的python例子:

让我们来考虑一个测试自动化的框架,测试需要运行在特定构建类上,比如'TC1,TC2…TCn',每一个类都包涵一个方法'run()'来执行测试。

我们提供了一个门面-TestRunner-在测试类之上,作为执行测试的简单接口。以这种方式,客户不在需要担心有多少测试在执行,怎么样执行他。

TestRunner类有一个方法名runAll,是执行已经注册的所有测试。

当用户的自动框架为执行测试去构建,作为客户,他需要创建一个TestRunner类,调用runall方法,runall方法会返回创建的测试对象,

并调用他们的run 方法,这样执行了所有测试。

以下是代码:

import time
class TC1:
  def run(self):
    print "####In Test 1####"
    time.sleep(1)
    print "Setting up"
    time.sleep(1)
    print "Running test"
    time.sleep(1)
    print "Tearing down"
    time.sleep(1)
    print "Test Finished\n"
class TC2:
  def run(self):
    print "#####In Test 2 ######"
    time.sleep(1)
    print "Setting up"
    time.sleep(1)
    print "Running test"
    time.sleep(1)
    print "Tearing down"
    time.sleep(1)
    print "Test Finished\n"
class TC3:
  def run(self):
    print "#####In Test 3 ######"
    time.sleep(1)
    print "Setting up"
    time.sleep(1)
    print "Running test"
    time.sleep(1)
    print "Tearing down"
    time.sleep(1)
    print "Test Finished\n"
#Facade
class TestRunner:
  def __init__(self):
    self.tc1 = TC1()
    self.tc2 = TC2()
    self.tc3 = TC3()
  def runAll(self):
    self.tc1.run()
    self.tc2.run()
    self.tc3.run()
#Client
if __name__ == '__main__':
  testrunner = TestRunner()
  testrunner.runAll()

运行结果:

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

python:print格式化输出到文件的实例

遇到一个写文件的小程序,需要把print输出改成输出到文件,遇到这个问题的思路是把需要的字符串拼接到一个字符串中,然后在写到文件中,这样做觉得很麻烦,想到之前的学的exec的使用,但是实...

Python中字符串对齐方法介绍

目的   实现字符串的左对齐,右对齐,居中对齐。 方法   字符串内置了以下方法:其中width是指包含字符串S在内的宽度,fillchar默认是空格,也可以指定填充字符 复制代码...

浅谈django orm 优化

orm优化 1.数据库技术进行优化,包括给字段加索引,设置唯一性约束等等; 2.查询过滤工作在数据库语句中做,不要放在代码中完成(看情况); 3.如果要一次查询出集合的数量,使用c...

python 弹窗提示警告框MessageBox的实例

需要安装pywin32模块,pip install pywin32 ##pip install pywin32 import win32api,win32con ##提醒OK...

numpy给array增加维度np.newaxis的实例

如下所示: a[:, np.newaxis] # 给a最外层中括号中的每一个元素加[] a[np.newaxis, :] # 给a最外层中括号中所有元素加[] 以上这篇numpy给...