scrapy立面parse_立面设计模式–设计观点
scrapy立面parse
在上一篇文章中,我们描述了适配器设计模式 。 在今天的文章中,我们将介绍另一种类似的“四结构帮派”模式 。 顾名思义,结构模式用于从许多不同的对象形成更大的对象结构。 外观模式就是这样一种模式,它为系统内的一组接口提供了简化的接口,因此对客户端隐藏了子系统的复杂性。
何时使用外墙图案?
分层:外观模式可以在JEE应用程序中用于创建一个层,以抽象和统一应用程序中的相关接口。 使用外观将定义每个子系统级别的入口点,从而使它们仅通过其外观进行通信。 这样可以简化它们之间的依赖关系。
Façade使API和库更易于使用,这有利于维护和可读性。 它还可以使用单个简化的API整理和抽象各种设计不当的API。
它还减少了外部代码对库内部工作的依赖性,从而提供了灵活性。
立面设计图案结构
在上述Façade模式的结构中,Façade类将子系统与客户端隔离。 客户端仅与Façade类进行交互,而无需了解子系统类。
例:
让我们以在线订单处理网站为例。 客户在不了解内部类如何工作的情况下下了订单。 下订单后,外观类层将调用子系统的方法(例如,用于库存检查的“库存”和用于处理付款的“付款”)。 处理完后,它将控制返回给客户类,并带有关于正在处理的订单的确认。
顺序图:
外墙设计顺序图
代码示例:
Inventory.java –
public class Inventory {public String checkInventory(String OrderId) {return 'Inventory checked';}
}
Payment.java
public class Payment {public String deductPayment(String orderID) {return 'Payment deducted successfully';}
}
OrderFacade.java
public class OrderFacade {private Payment pymt = new Payment();private Inventory inventry = new Inventory();public void placeOrder(String orderId) {String step1 = inventry.checkInventory(orderId);String step2 = pymt.deductPayment(orderId);System.out.println('Following steps completed:' + step1 + ' & ' + step2);}
}
客户端程序
public class Client {public static void main(String args[]){OrderFacade orderFacade = new OrderFacade();orderFacade.placeOrder('OR123456');System.out.println('Order processing completed');}
}
优点:
- 我们可以使用façade模式来整理所有复杂的方法调用和相关的代码块,并通过一个Façade类将其通道化。 这样,对于客户而言,只有一个呼叫。 即使我们更改了子系统包/类及其逻辑,也不会影响客户端调用。 简而言之,这增加了松散的耦合。
- 它使创建和使用更加结构化的环境变得更加容易使用和维护,并减少了库或其他软件包之间的依赖性。
缺点/后果:
- 缺点之一是子系统方法连接到Façade层。 如果子系统的结构发生变化,则需要随后对Façade层和客户端方法进行更改。
有趣的一点:
外墙模式可能与中介模式混淆。 中介器还以类似于外观的方式抽象了子系统的功能。 但是,这两种模式之间存在细微的差异。 在中介模式下,子系统知道中介程序,但是在立面的情况下,子系统对立面一无所知。 这是从Façade到子系统的一种单向通信。
Java API中使用的外观
- javax.servlet.http.HttpSession
- javax.servlet.http.HttpServletRequest
- javax.servlet.http.HttpServletResponse
- javax.faces.context.ExternalContext
参考:立面 设计模式–来自ICG博客上我们JCG合作伙伴 Mainak Goswami的设计观点 。
翻译自: https://www.javacodegeeks.com/2012/11/facade-design-pattern-design-standpoint.html
scrapy立面parse
scrapy立面parse_立面设计模式–设计观点相关推荐
- 立面设计模式–设计观点
在上一篇文章中,我们描述了适配器设计模式 . 在今天的文章中,我们将展示另一种类似的"四结构帮派"模式 . 顾名思义,结构模式用于从许多不同的对象形成更大的对象结构. 外观模式就是 ...
- scrapy立面parse_立面模式在Swift
scrapy立面parse 重点 (Top highlight) 定义 (Definition) 'Facade' pattern is a structural design pattern whi ...
- 如何应用设计模式设计你的足球引擎
blog原文地址http://blog.csdn.net/lanphaday/archive/2008/09/11/2915518.aspx 如何应用设计模式设计你的足球引擎(第一.二部分)te> ...
- 游戏邦成立以来部分游戏设计观点回顾
游戏邦成立以来部分游戏设计观点回顾(五万字长文) 发布时间:2012-01-10 17:04:40 Tags:微博平台,游戏邦,部分游戏设计观点回顾 2010年底,游戏邦从数据分析的角度解析了当时手机 ...
- 领域驱动设计模式设计与实践_在域驱动设计中使用状态模式
领域驱动设计模式设计与实践 域驱动设计(DDD)是一种开发软件的方法,其中,通过将实现与核心业务概念的不断发展的模型相联系,解决了问题的复杂性. 该术语是由Eric Evans创造的,并且有一个DDD ...
- 如何应用设计模式设计你的足球引擎(第三、四部分)完
原文地址:http://www.codeproject.com/KB/cpp/applyingpatterns2.aspx 作者:An 'OOP' Madhusudanan 译者:赖勇浩(http:/ ...
- 绘画语言的要素形状b节奏c立面d色彩,环境艺术设计理论考试题目资料.doc
环境艺术设计理论知识考卷 1.色彩三要素是指( ). A.黑.白.灰 B.红.黄.蓝 C.明度.纯度.色相 D.间色.复色.补色 2.现代风格的室内设计起源于1919年成立的包豪斯(Bauhalls) ...
- 如何应用设计模式设计你的足球引擎(第一、二部分)
原文地址: http://www.codeproject.com/KB/architecture/applyingpatterns.aspx 作者:An 'OOP' Madhusudanan 译者:赖 ...
- 设计模式-设计原则(Design Principle)
本文由@呆代待殆原创,转载请注明出处. 写在前面:所谓设计原则并不是一定要遵守的法则,只是一种建议,因为保持这些原则本身会有一定代价,若是这些代价超过了带来的好处就得不偿失了,所以一切还是以简单为准. ...
最新文章
- Android 从 Android 本地图库选择多个图片
- struts基本原理图
- 框架:DAO,Service,Controller,View层之间的逻辑关系
- 一图读懂《北京市数据中心统筹发展实施方案(2021-2023年)》
- 2021夏季每日一题 【week4 完结】
- GTK+与QT的对比
- 【已解决】如何干干净净的卸载MySQL数据库
- 标准库类型String
- 江南大学计算机科学esi排名,喜忧参半!2021年5月ESI世界大学排行榜,21个学科排名数据分析!...
- MySQL(6)---数据库 管理
- Protobuf动态解析那些事儿
- 八、开发者工具和指南(三) Source code organization
- php 同义词词库,php实现SEO伪原创同义词替换函数
- MATLAB符号运算小技巧
- Photoshopnbsp;CS4基础视频教程:通道与…
- 十三水牌型 图片_十三水三分天下是什么 十三水三分天下牌型详解
- matplotlib画图教程系列之-堆积柱状图
- 中国农业大学计算机专硕2019分数线,中国农业大学2019考研复试分数线已公布
- TestCenter Layer4-7分析
- FFmpeg循环推流
热门文章
- Jsoup代码解读之三-Document的输出
- 13-一对多左连接查询分步查询(查询所有客户及客户对应的订单)
- Web开发静态资源处理---SpringBoot
- wrapper 并集如何使用
- java线程的创建线程_多线程(Thread、线程创建、线程池)
- 服务器ubuntu系统版本选型原则,系统集成 - 选择Ubuntu服务器版操作系统的六大理由_服务器应用_Linux公社-Linux系统门户网站...
- 登录系统 提示框_实物资产管理软件操作手册(职员和系统用户)
- 转:Spring Boot 获取 HttpServletRequest 的方法
- java运行环境变量及自定义变量
- java泛型程序设计——调用遗留代码