大话涉及模式Python实现-外观模式

外观模式(Facade Pattern):为子系统中的一组接口提供一个一致界面,此模式定义一个高层接口,使得子系统更加容易使用

下面是一个外观模式的demo:

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3
 4 __author__ = ‘Andy‘
 5 """
 6 大话设计模式
 7 设计模式——外观模式
 8 facade_pattern.py
 9 外观模式(Facade Pattern):为子系统中的一组接口提供一个一致界面,此模式定义一个高层接口,使得子系统更加容易是用
10 """
11 # 外观类
12 class Fund(object):
13
14     def __init__(self):
15         self.stocka = StockA()
16         self.stockb = StockB()
17         self.realty = Realty()
18
19     def buy(self):
20         self.stocka.buy()
21         self.stockb.buy()
22         self.realty.buy()
23
24     def sell(self):
25         self.stocka.sell()
26         self.stockb.sell()
27         self.realty.sell()
28
29 # 投资股票A类
30 class StockA(object):
31
32     def buy(self):
33         print ‘buy StockA‘
34
35     def sell(self):
36         print ‘sell StockA‘
37 # 投资股票B类
38 class StockB(object):
39
40     def buy(self):
41         print ‘buy StockB‘
42
43     def sell(self):
44         print ‘sell StockB‘
45
46 # 投资房地产
47 class Realty(object):
48
49     def buy(self):
50         print ‘buy Realty‘
51
52     def sell(self):
53         print ‘sell Realty‘
54
55
56
57 if __name__=="__main__":
58
59     fund = Fund()
60     fund.buy()
61     fund.sell()

上面类的设计如下图:

Fund类需要知道子系统类的功能,以便将适当的client请求发送给合适的子系统对象,使子系统的使用更加简单

作者:Andy
出处:http://www.cnblogs.com/onepiece-andy/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

时间: 2024-11-10 14:01:34

大话涉及模式Python实现-外观模式的相关文章

浅谈Python设计模式 - 外观模式

声明:本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 外观模式 外观模式的核心在于将复杂的内部实现包装起来,只向外界提供简单的调用接口.类似现实世界中的电脑,开机按钮可以说就是一个简单的调用接口,帮用户屏蔽了复杂的内部电路. 外观设计模式 -- 有助于隐藏系统的内部复杂性,并且通过一个简化的接口向客户端暴露必要的部分.本质上,外观是在已有复杂系统之上实现的一个抽象层. 本来想引用书中的例子,但是其整个代码被复杂化,不好理解.然后在网上看到一

大话设计模式读书笔记--8.外观模式

外观模式的用意是为子系统提供一个集中化和简化的沟通渠道,而不是向子系统加入新的行为 生活中的例子: 一个电源总开关可以控制四盏灯.一个风扇.一台空调和一台电视机的启动和关闭.该电源总开关可以同时控制上述所有电器设备,电源总开关即为该系统的外观模式设计 定义 定义: 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这一接口使得这一子系统更加容易使用 结构图 Facade: 是模式的核心,指导所有子系统的功能, 可根据客户端的需求定制功能组合 SubSystemOne: 实现子系统

Python设计模式——外观模式

外观模式跟代理模式有点像,都是在client和目标的类之间建一个中间的类,client不直接调用目标的类,而是通过先调用中间类的方法,由中间类来实现怎么调用目标类. 代理模式用这种模式的目的是可以实现client和目标类不直接通信,使他们之间相互独立,这样就比较安全,因为client不知道目标类的存在. 外观模式的目的是通过建立一个中间类,把调用目标类的代码都封装好,例如有时候目标类有很多个,逐一得去调用它们会很麻烦,这样通过中间类封装好的接口,client的调用就好很简单 不适用外观模式的例子

设计模式之结构型模式—— 2.5 外观模式

<?php /**  * 2.5 外观模式  *   定义:  *       为子系统中的一组接口提供一个一致的界  *       面,Facade模式定义了一个高层接口,这  *       个接口使得这一子系统更加容易使用.  *   角色:  *       1. 外观类  *           职责:知道哪些子系统类负责处理请  *                 求,将客户的请求代理给适当  *                 的子系统对象.  *       2. 子系统类  

NET设计模式 第二部分 结构性模式(11):外观模式(Fa&#231;ade Pattern)

外观模式(Façade Pattern) ——.NET设计模式系列之十二 Terrylee,2006年3月 概述 在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化.那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦?这就是要说的Façade 模式. 意图 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.[GOF <设计模式>] 示意

(结构性模式四)外观模式

package com.eyugame.modle; /** * 外观模式 * @author JYC506 * */ public class Computer { private Cpu cpu; private Disk disk; public Computer() { super(); this.cpu = new Cpu(); this.disk = new Disk(); } public void start() { System.out.println("computer st

大话涉及模式Python实现-代理模式

代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 __author__ = 'Andy' 5 6 """ 7 大话设计模式 8 设计模式--代理模式 9 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问 10 实现:戴励 替 卓贾易 送礼物给 娇娇 11 模型: 12 #公共接口类 13 class

【机房合作】重新认识外观模式

机房收费系统合作版,是我们第三次与机房收费系统相遇的时刻.在个人重构的时候,我们就开始了"七层架构"之旅,其中外观模式是单独作为一层来开发的. 那个时候,也不理解外观是起到怎样一个作用,大话上的解释表面上容易理解,看完后自己也觉得很有道理.但在系统程序中,自己是只要经过BLL逻辑层的一个方法,就需要再经过一次外观,从而"解除耦合",避免了UI层与BLL层之间直接传递数据. 那个时候,在敲代码的时候就有一种感觉:每次写完B层逻辑,又要在F层重新写一次,这就是在解耦和吗

设计模式(八):外观模式

这个模式是我觉得最好懂的模式. 外观(Facade)模式 定义: 外观模式是一种结构型模式.它为更大的代码体提供了一个方便的高层次接口,能够隐藏其底层的真实复杂性.简单说就是——小接口有大智慧. 例子: 使用jQuery的$(el).css()或$(el).animate()方法时,实际上我们是在使用Facade:一种更简单的公有接口,使我们不必手动在jQuery核心调用很多内部方法以便实现某些行为. 优点: 1. 易于使用. 2. 实现该模式时占用空间小. 3. 调用者与底层代码解耦. 缺点: