完整解决方案为了降低功能键与功能处理类之间的耦合度,让用户可以自定义每一个功能键的功能,Sunny 软件公司开发人员使用命令模式来设计“自定义功能键”模块,其核心结构如图 4 所示: 在图 4 中,FBSettingWindow 是“功能键设置”界面类,FunctionButton 充当请求调用者,Command 充当抽象命令类,MinimizeCommand 和 HelpCommand 充当具体命令类,WindowHanlder 和…
装修新房的最后几道工序之一是安装插座和开关,通过开关可以控制一些电器的打开和关闭,例如电灯或者排气扇。在购买开关时,我们并不知道它将来到底用于控制什么电器,也就是说,开关与电灯、排气扇并无直接关系,一个开关在安装之后可能用来控制电灯,也可能用来控制排气扇或者其他电器设备。开关与电器之间通过电线建立连接,如果开关打开,则电线通电,电器工作;
纯与不纯的职责链模式职责链模式可分为纯的职责链模式和不纯的职责链模式两种: 纯的职责链模式一个纯的职责链模式要求一个具体处理者对象只能在两个行为中选择一个:要么承担全部责任,要么将责任推给下家,不允许出现某一个具体处理者对象在承担了一部分或全部责任后又将责任向下传递的情况。
完整解决方案为了让采购单的审批流程更加灵活,并实现采购单的链式传递和处理,Sunny 公司开发人员使用职责链模式来实现采购单的分级审批,其基本结构如图所示: 在图中,抽象类 Approver 充当抽象处理者(抽象传递者),Director、VicePresident、President 和 Congress 充当具体处理者(具体传递者),PurchaseRequest 充当请求类。
职责链模式概述很多情况下,在一个软件系统中可以处理某个请求的对象不止一个,例如 SCM 系统中的采购单审批,主任、副董事长、董事长和董事会都可以处理采购单,他们可以构成一条处理采购单的链式结构,采购单沿着这条链进行传递,这条链就称为职责链。职责链可以是一条直线、一个环或者一个树形结构,最常见的职责链是直线型,即沿着一条单向的链来传递请求。
“一对二”,“过”,“过”……这声音熟悉吗?你会想到什么?对!纸牌。在类似“斗地主”这样的纸牌游戏中,某人出牌给他的下家,下家看看手中的牌,如果要不起上家的牌则将出牌请求再转发给他的下家,其下家再进行判断。一个循环下来,如果其他人都要不起该牌,则最初的出牌者可以打出新的牌。
软件模式与具体的应用领域无关,也就是说无论你从事的是移动应用开发、桌面应用开发、Web 应用开发还是嵌入式软件的开发,都可以使用软件模式。 在软件模式中,设计模式是研究最为深入的分支,设计模式用于在特定的条件下为一些重复出现的软件设计问题提供合理的、有效的解决方案,它融合了众多专家的设计经验,已经在成千上万的软件中得以应用。
本章节我们将为大家介绍如何使用 Ruby 语言来编码和解码 JSON 对象。环境配置在使用 Ruby 编码或解码 JSON 数据前,我们需要先安装 Ruby JSON 模块。在安装该模块前你需要先安装 Ruby gem,我们使用 Ruby gem 安装 JSON 模块。
每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是程序中一个单一的顺序控制流程,在单个程序中同时运行多个线程完成不同的工作,称为多线程。Ruby 中我们可以通过 Thread 类来创建多线程,Ruby的线程是一个轻量级的,可以以高效的方式来实现并行的代码。创建 Ruby 线程要启动一个新的线程,只需要调用 Thread.
什么是 SOAP?简单对象访问协议(SOAP,全写为Simple Object Access Protocol)是交换数据的一种协议规范。SOAP 是一种简单的基于 XML 的协议,它使应用程序通过 HTTP 来交换信息。简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。
什么是 XML ?XML 指可扩展标记语言(eXtensible Markup Language)。可扩展标记语言,标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
Ruby提供了两个级别访问网络的服务,在底层你可以访问操作系统,它可以让你实现客户端和服务器为面向连接和无连接协议的基本套接字支持。Ruby 统一支持应用程的网络协议,如FTP、HTTP等。不管是高层的还是底层的。ruby提供了一些基本类,让你可以使用TCP,UDP,SOCKS等很多协议交互,而不必拘泥在网络层。这些类也提供了辅助类,让你可以轻松的对服务器进行读写。
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
CGI::Session 可以为用户和CGI环境保存持久的会话状态,会话使用后需要关闭,这样可以保证数据写入到存储当中,当会话完成后,你需要删除该数据。 #!/usr/bin/ruby require 'cgi' require 'cgi/session' cgi = CGI.new("html4") sess = CGI::Session.new( cgi, "session_key" => "a_test", "prefix" =>
HTTP协议是无状态协议。但对于一个商业网站,它需要保持不同的页面间的会话信息。如用户在网站注册过程中需要跳转页面,但又要保证之前填写的信息部丢失。这种情况下 Cookie 很好的帮我们解决了问题。Cookie 是如何工作的?
以下为CGI类的方法列表: 序号方法描述 1CGI::new([ level="query"])创建 CGI 对象。query可以是以下值: query: 没有 HTML 生成输出 html3: HTML3.2 html4: HTML4.0 Strict html4Tr: HTML4.0 Transitional html4Fr: HTML4.0 Frameset 2CGI::escape( str)使用 URL 编码来转义字符串 3CGI::unescape( str)对通过 escape() 编码的字符串进行解码。
Ruby 是一门通用的语言,不仅仅是一门应用于WEB开发的语言,但 Ruby 在WEB应用及WEB工具中的开发是最常见的。使用Ruby您不仅可以编写自己的SMTP服务器,FTP程序,或Ruby Web服务器,而且还可以使用Ruby进行CGI编程。接下来,让我们花点时间来学校Ruby的CGI编辑。编写 CGI 脚本最脚本的 Ruby CGI 代码如下所示:#!/usr/bin/ruby puts "HTTP/1.
本章节将向您讲解如何使用 Ruby 访问数据库。Ruby DBI 模块为 Ruby 脚本提供了类似于 Perl DBI 模块的独立于数据库的接口。DBI 即 Database independent interface,代表了 Ruby 独立于数据库的接口。DBI 在 Ruby 代码与底层数据库之间提供了一个抽象层,允许您简单地实现数据库切换。它定义了一系列方法、变量和规范,提供了一个独立于数据库的一致的数据库接口。
正则表达式是一种特殊序列的字符,它通过使用有专门语法的模式来匹配或查找其他字符串或字符串集合。语法正则表达式从字面上看是一种介于斜杠之间或介于跟在 %r 后的任意分隔符之间的模式,如下所示:/pattern//pattern/im # 可以指定选项%r!/usr/local! # 一般的分隔的正则表达式实例#!/usr/bin/rubyline1 = "Cats are smarter than dogs";
Ruby 是纯面向对象的语言,Ruby 中的一切都是以对象的形式出现。Ruby 中的每个值都是一个对象,即使是最原始的东西:字符串、数字,甚至连 true 和 false 都是对象。类本身也是一个对象,是 Class 类的一个实例。本章将向您讲解所有与 Ruby 面向对象相关的主要功能。类用于指定对象的形式,它结合了数据表示法和方法,把数据整理成一个整齐的包。
关注时代Java