软件的架构与模式之经典架构模式简介
作者:︶ㄣ风☆缘ξ 日期:2006-12-11 11:10:59
根据Linda Rising的《Pattern Almanac》一书,已知的架构模式有七十多种。这是一个只多不少的统计,其中包括了很多通常认为是设计模式的模式,比如Bridge,Facade,Interpreter,Mediator等模式通常认为是设计模式,但是在许多情况下,也可以作为架构模式出现,因此也常常被当作架构模式。
Layers架构模式
在收集到用户对软件的要求之后,架构设计就开始了。架构设计一个主要的目的,就是把系统划分成为很多"板块"。划分的方式通常有两种,一种是横向的划分,一种是纵向划分。
横向划分将系统按照商业目的划分。比如一个书店的管理系统可以划分成为进货、销售、库存管理、员工管理等等。
纵向划分则不同,它按照抽象层次的高低,将系统划分成"层",或叫Layer。比如一个公司的内网管理系统通常可以划分成为下面的几个Layer:
一、网页,也就是用户界面,负责显示数据、接受用户输入;
二、领域层,包括JavaBean或者COM对象、B2B服务等,封装了必要的商业逻辑,负责根据商业逻辑决定显示什么数据、以及如何根据用户输入的数据进行计算;
三、数据库,负责存储数据,按照查询要求提供所存储的数据。
四、操作系统层,比如Windows NT或者Solaris等
五、硬件层,比如SUN E450服务器等
有人把这种Layer叫做Tier,但是Tier多带有物理含义,不同的Tier往往位于不同的计算机上,由网络连接起来,而Layer是纯粹逻辑的概念,与物理划分无关。
Layers架构模式的好处是:
第一、任何一层的变化都可以很好地局限于这一层,而不会影响到其他各层。
第二、更容易容纳新的技术和变化。Layers架构模式容许任何一层变更所使用的技术
Fa?ade架构模式
外部与一个子系统的通讯必须通过一个统一的门面(Facade)对象进行,这就是Facade模式。
现代的软件系统都是比较复杂的,设计模式的任务就是协助设计师处理复杂系统的设计。
设计师处理复杂系统的一个常见方法便是将其"分而治之",把一个系统划分为几个较小的子系统。但是这样做了以后,设计师往往仍然会发现一个子系统内仍然有太多的类型要处理。而使用一个子系统的使用端往往只关注一些特定的功能,却要同时与子系统内部的许多对象打交道后才能达到目的,请见下面的对象图。
图4、Facade架构模式的结构图。
这就是一种不便,它使得系统的逻辑变得不必要的复杂,维护成本提高,复用率降低。
用一个范例说明,中国大陆的医院便是一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收银、取药等。看病的病人要与这些部门打交道,就如同一个子系统的使用端与一个子系统的各个类型打交道一样,不是一件容易的事情。
首先病人必须先挂号,然后门诊。如果医生要求化验,病人必须首先划价,然后缴款,才能到化验部门做化验。化验后,再回到门诊室,请见下面的对象图。
图5、描述病人在医院里的体验。图中的方框代表医院。
解决这种不便的方法便是引进Facade模式。仍然通过医院的范例说明,可以设置一个接待员的位置,由接待员负责代为挂号、划价、缴费、取药等。这个接待员就是Facade模式的体现,病人只接触接待员,由接待员负责与医院的各个部门打交道,请见下面的对象图。
图6、描述经过Facade模式的改装后,病人在医院里的体验。图中的方框代表医院。
Facade模式要求一个子系统的外部与其内部的通讯必须通过一个统一的门面(Facade)对象进行。Facade模式提供一个高等级的接口,使得子系统更易于使用。
使用了Facade模式之后,本章的第一个图中所描述的一个子系统的使用端对象所面对的复杂关系就可以简化为下面这个样子。
图7、Facade架构模式的结构图
描述经过Facade模式的改装后,一个子系统的使用端与子系统的关系。图中的大方框代表一个子系统。
就如同医院的接待员一样,Facade模式的门面类型将使用端与子系统的内部复杂性分隔开,使得使用端只需要与门面对象打交道,而不需要与子系统内部的很多对象打交道。
Mediator架构模式
Mediator模式包装了一系列对象相互作用的方式,使得这些对象不必互相明显参照;从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其它的一些对象之间的相互作用;从而可以保证这些相互作用可以彼此独立地变化。
在下面的示意图中有大量的对象,这些对象既会影响别的对象,又会被别的对象所影响,因此常常叫做同事(Colleague)对象。这些同事对象通过彼此的相互作用形成系统的行为。从图中可以看出,几乎每一个对象都需要与其它的对象发生相互作用,而这种相互作用表现为一个对象与另一个对象的直接耦合。
图8、这是一个过度耦合的系统
通过引入调停者对象(Mediator),可以将系统的网状结构变成以中介者为中心的星形结构,如下图所示。在这个星形结构中,同事对象不再通过直接的联系与另一个对象发生相互作用;相反地,它通过调停者对象与另一个对象发生相互作用。调停者对象的存在保证了对象结构上的稳定,也就是说,系统的结构不会因为新对象的引入造成大量的修改工作。
图9、这是一个使用了Mediator架构模式之后的结构图
比较传统的设计方法,面向对象的技术可以更好地协助设计师管理更为复杂的系统。一个好的面向对象的设计可以使对象之间增加协作性(Collaboration),减少耦合度(Coupling)。一个深思熟虑的设计会把一个系统分解为一群相互协作的同事对象,然后给每一个同事对象以独特的责任,恰当的配置它们之间的协作关系,使它们可以在一起工作。
在Mediator模式中,所有的成员对象都可以协调工作,但是又不直接相互管理。这些对象都与一个处于中心地位的调停者对象发生紧密的关系,由这个调停者对象进行协调工作。这个协调者对象叫做调停者(Mediator),而调停者所协调的成员对象称做同事(Colleague)对象。
在Colleague对象内部发生的事件会影响到所有的同事,但是这种影响不是以直接管理的方式直接传到其它的对象上的。记住在小组的成员增加时,这样的相互作用关系是以比指数更快的方式增加的。相反,这种影响仅仅直接影响到调停者对象,而调停者对象反过来会协调其它的同事,形成整个系统的行为。
如果小组的成员增加时,调停者对象可能会面临修改,而其它的同事则可以装做不知道这个新的成员一样,不必修改。反过来,如果小组的成员之一被从系统中删除的话,调停者对象需要对此做出修改,而小组中其它的同事则不必改动。
Interpreter架构模式
给定一个语言之后,Interpreter模式可以定义出其文法的一种表示,并同时提供一个直译器;使用端可以使用这个直译器来解释这个语言中的句子。
如果某一类型问题一再地发生的话,那么一个有意义的做法就是将此类型问题的各个实例表达为一个简单语言中的语句。这样就可以建造一个直译器,通过解释这些语句达到解决问题的目的。
例如,依照一个匹配模式搜寻字符串便是一个常见的问题。与其为每一个匹配模式建造一个特定的算法,不如建造一个一般性的算法处理各种常规表达式。当接到一个指定的常规表达式时,系统使用一个直译器解释这个常规表达式,从而对字符串进行匹配。
再比如VBA(Visual Basic for Applications)就不仅仅出现在微软的Office系列软件中,并且可以供第三厂家出产的软件嵌入使用;Crystal Reports报表生成软件也包括了一个便于使用的宏语言,使用户可以执行较为复杂的命令操作。一般而言,将VBA或者其它的语言软件嵌入到自己的软件产品中,可以使产品定制化(Customization)能力大大增强,但是这些宏语言引擎往往都很昂贵。
现在要介绍的Interpreter模式将描述怎样在有了一个简单的文法后,使用模式设计解释这些语句。熟悉了这个模式以后,一个没有接收过形式语言和编译器的正规训练的设计师也可以自行设计一个简单的直译器,以便为使用端提供一个简单语言,或者在系统内部使用一个简单语言描述一个合适的问题。
语言、直译器和剖析器
Interpreter模式只描述直译器是怎样工作的,并不指明怎样在执行时创建新的直译器。虽然广义地讲直译器不一定要有一个剖析器(Parser),但是使用剖析器仍然是最常见的建立直译器的办法。一个剖析器可以从一个档或命令行读入文字性命令,并创建直译器。
剖析器是一种能够识别文字并将文字按照一定规则进行分解以便进一步处理的对象。剖析器能够识别的字符串叫做语言。通常建立的小型计算机语言是与环境无关的语言,也就是遵循一定的文法的文字模式,所谓文法,便是决定怎样将语言的元素组合起来的规则的集合。剖析器便是根据组合规则将字符串分解的。
抽象地讲,语言并不一定是以字符串的形式表达的。在Interpreter模式里面所提到的语言是指任何直译器对象能够解释的任何组合。在Interpreter模式中,需要定义一个代表文法的命令类型的等级结构,也就是一系列的组合规则;每一个命令对象都有一个解释方法,代表对命令对象的解释。
命令对象的等级结构中的对象的任何排列组合都是一个语言,而剖析器的工作便是将一个文字性语言翻译成为等效的直译器语言。因此,直译器往往需要剖析器。
认识Jack吗?
剖析器生成器(Parser Generator),常常称为编译器的编译器(Compiler Complier)。Sun Microsystem提供一个专为Java程序员发明的强大的剖析器生成器,最初叫做Jack,后来改名为JavaCC。
要使用JavaCC,必须使用它提供的脚本语言编写一个脚本,然后执行JavaCC生成Java源代码。这生成的源代码就是所需的剖析器。现在Sun已经不再负责JavaCC的研发,对JavaCC感兴趣的读者可以从http://www.experimentalstuff.com/Technologies/JavaCC得到免费的JavaCC和相关数据。
JavaCC最早命名为Jack是为了与一个早就广泛使用的剖析器生成器YACC谐音。如果读者已经熟悉了YACC,可以使用YACC达到同样的目的;只是相比之下JavaCC更容易得到Java程序员的喜爱。
Layers架构模式
在收集到用户对软件的要求之后,架构设计就开始了。架构设计一个主要的目的,就是把系统划分成为很多"板块"。划分的方式通常有两种,一种是横向的划分,一种是纵向划分。
横向划分将系统按照商业目的划分。比如一个书店的管理系统可以划分成为进货、销售、库存管理、员工管理等等。
纵向划分则不同,它按照抽象层次的高低,将系统划分成"层",或叫Layer。比如一个公司的内网管理系统通常可以划分成为下面的几个Layer:
一、网页,也就是用户界面,负责显示数据、接受用户输入;
二、领域层,包括JavaBean或者COM对象、B2B服务等,封装了必要的商业逻辑,负责根据商业逻辑决定显示什么数据、以及如何根据用户输入的数据进行计算;
三、数据库,负责存储数据,按照查询要求提供所存储的数据。
四、操作系统层,比如Windows NT或者Solaris等
五、硬件层,比如SUN E450服务器等
有人把这种Layer叫做Tier,但是Tier多带有物理含义,不同的Tier往往位于不同的计算机上,由网络连接起来,而Layer是纯粹逻辑的概念,与物理划分无关。
Layers架构模式的好处是:
第一、任何一层的变化都可以很好地局限于这一层,而不会影响到其他各层。
第二、更容易容纳新的技术和变化。Layers架构模式容许任何一层变更所使用的技术
Fa?ade架构模式
外部与一个子系统的通讯必须通过一个统一的门面(Facade)对象进行,这就是Facade模式。
现代的软件系统都是比较复杂的,设计模式的任务就是协助设计师处理复杂系统的设计。
设计师处理复杂系统的一个常见方法便是将其"分而治之",把一个系统划分为几个较小的子系统。但是这样做了以后,设计师往往仍然会发现一个子系统内仍然有太多的类型要处理。而使用一个子系统的使用端往往只关注一些特定的功能,却要同时与子系统内部的许多对象打交道后才能达到目的,请见下面的对象图。
图4、Facade架构模式的结构图。
这就是一种不便,它使得系统的逻辑变得不必要的复杂,维护成本提高,复用率降低。
用一个范例说明,中国大陆的医院便是一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收银、取药等。看病的病人要与这些部门打交道,就如同一个子系统的使用端与一个子系统的各个类型打交道一样,不是一件容易的事情。
首先病人必须先挂号,然后门诊。如果医生要求化验,病人必须首先划价,然后缴款,才能到化验部门做化验。化验后,再回到门诊室,请见下面的对象图。
图5、描述病人在医院里的体验。图中的方框代表医院。
解决这种不便的方法便是引进Facade模式。仍然通过医院的范例说明,可以设置一个接待员的位置,由接待员负责代为挂号、划价、缴费、取药等。这个接待员就是Facade模式的体现,病人只接触接待员,由接待员负责与医院的各个部门打交道,请见下面的对象图。
图6、描述经过Facade模式的改装后,病人在医院里的体验。图中的方框代表医院。
Facade模式要求一个子系统的外部与其内部的通讯必须通过一个统一的门面(Facade)对象进行。Facade模式提供一个高等级的接口,使得子系统更易于使用。
使用了Facade模式之后,本章的第一个图中所描述的一个子系统的使用端对象所面对的复杂关系就可以简化为下面这个样子。
图7、Facade架构模式的结构图
描述经过Facade模式的改装后,一个子系统的使用端与子系统的关系。图中的大方框代表一个子系统。
就如同医院的接待员一样,Facade模式的门面类型将使用端与子系统的内部复杂性分隔开,使得使用端只需要与门面对象打交道,而不需要与子系统内部的很多对象打交道。
Mediator架构模式
Mediator模式包装了一系列对象相互作用的方式,使得这些对象不必互相明显参照;从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其它的一些对象之间的相互作用;从而可以保证这些相互作用可以彼此独立地变化。
在下面的示意图中有大量的对象,这些对象既会影响别的对象,又会被别的对象所影响,因此常常叫做同事(Colleague)对象。这些同事对象通过彼此的相互作用形成系统的行为。从图中可以看出,几乎每一个对象都需要与其它的对象发生相互作用,而这种相互作用表现为一个对象与另一个对象的直接耦合。
图8、这是一个过度耦合的系统
通过引入调停者对象(Mediator),可以将系统的网状结构变成以中介者为中心的星形结构,如下图所示。在这个星形结构中,同事对象不再通过直接的联系与另一个对象发生相互作用;相反地,它通过调停者对象与另一个对象发生相互作用。调停者对象的存在保证了对象结构上的稳定,也就是说,系统的结构不会因为新对象的引入造成大量的修改工作。
图9、这是一个使用了Mediator架构模式之后的结构图
比较传统的设计方法,面向对象的技术可以更好地协助设计师管理更为复杂的系统。一个好的面向对象的设计可以使对象之间增加协作性(Collaboration),减少耦合度(Coupling)。一个深思熟虑的设计会把一个系统分解为一群相互协作的同事对象,然后给每一个同事对象以独特的责任,恰当的配置它们之间的协作关系,使它们可以在一起工作。
在Mediator模式中,所有的成员对象都可以协调工作,但是又不直接相互管理。这些对象都与一个处于中心地位的调停者对象发生紧密的关系,由这个调停者对象进行协调工作。这个协调者对象叫做调停者(Mediator),而调停者所协调的成员对象称做同事(Colleague)对象。
在Colleague对象内部发生的事件会影响到所有的同事,但是这种影响不是以直接管理的方式直接传到其它的对象上的。记住在小组的成员增加时,这样的相互作用关系是以比指数更快的方式增加的。相反,这种影响仅仅直接影响到调停者对象,而调停者对象反过来会协调其它的同事,形成整个系统的行为。
如果小组的成员增加时,调停者对象可能会面临修改,而其它的同事则可以装做不知道这个新的成员一样,不必修改。反过来,如果小组的成员之一被从系统中删除的话,调停者对象需要对此做出修改,而小组中其它的同事则不必改动。
Interpreter架构模式
给定一个语言之后,Interpreter模式可以定义出其文法的一种表示,并同时提供一个直译器;使用端可以使用这个直译器来解释这个语言中的句子。
如果某一类型问题一再地发生的话,那么一个有意义的做法就是将此类型问题的各个实例表达为一个简单语言中的语句。这样就可以建造一个直译器,通过解释这些语句达到解决问题的目的。
例如,依照一个匹配模式搜寻字符串便是一个常见的问题。与其为每一个匹配模式建造一个特定的算法,不如建造一个一般性的算法处理各种常规表达式。当接到一个指定的常规表达式时,系统使用一个直译器解释这个常规表达式,从而对字符串进行匹配。
再比如VBA(Visual Basic for Applications)就不仅仅出现在微软的Office系列软件中,并且可以供第三厂家出产的软件嵌入使用;Crystal Reports报表生成软件也包括了一个便于使用的宏语言,使用户可以执行较为复杂的命令操作。一般而言,将VBA或者其它的语言软件嵌入到自己的软件产品中,可以使产品定制化(Customization)能力大大增强,但是这些宏语言引擎往往都很昂贵。
现在要介绍的Interpreter模式将描述怎样在有了一个简单的文法后,使用模式设计解释这些语句。熟悉了这个模式以后,一个没有接收过形式语言和编译器的正规训练的设计师也可以自行设计一个简单的直译器,以便为使用端提供一个简单语言,或者在系统内部使用一个简单语言描述一个合适的问题。
语言、直译器和剖析器
Interpreter模式只描述直译器是怎样工作的,并不指明怎样在执行时创建新的直译器。虽然广义地讲直译器不一定要有一个剖析器(Parser),但是使用剖析器仍然是最常见的建立直译器的办法。一个剖析器可以从一个档或命令行读入文字性命令,并创建直译器。
剖析器是一种能够识别文字并将文字按照一定规则进行分解以便进一步处理的对象。剖析器能够识别的字符串叫做语言。通常建立的小型计算机语言是与环境无关的语言,也就是遵循一定的文法的文字模式,所谓文法,便是决定怎样将语言的元素组合起来的规则的集合。剖析器便是根据组合规则将字符串分解的。
抽象地讲,语言并不一定是以字符串的形式表达的。在Interpreter模式里面所提到的语言是指任何直译器对象能够解释的任何组合。在Interpreter模式中,需要定义一个代表文法的命令类型的等级结构,也就是一系列的组合规则;每一个命令对象都有一个解释方法,代表对命令对象的解释。
命令对象的等级结构中的对象的任何排列组合都是一个语言,而剖析器的工作便是将一个文字性语言翻译成为等效的直译器语言。因此,直译器往往需要剖析器。
认识Jack吗?
剖析器生成器(Parser Generator),常常称为编译器的编译器(Compiler Complier)。Sun Microsystem提供一个专为Java程序员发明的强大的剖析器生成器,最初叫做Jack,后来改名为JavaCC。
要使用JavaCC,必须使用它提供的脚本语言编写一个脚本,然后执行JavaCC生成Java源代码。这生成的源代码就是所需的剖析器。现在Sun已经不再负责JavaCC的研发,对JavaCC感兴趣的读者可以从http://www.experimentalstuff.com/Technologies/JavaCC得到免费的JavaCC和相关数据。
JavaCC最早命名为Jack是为了与一个早就广泛使用的剖析器生成器YACC谐音。如果读者已经熟悉了YACC,可以使用YACC达到同样的目的;只是相比之下JavaCC更容易得到Java程序员的喜爱。
平均得分
(0 次评分)
评论: 11 | 查看次数: 2397
- 共有 11 条评论
- 共有 11 条评论
发表评论
订阅
文章来自:
标签: 





jianyang
TCM
Diabeat
jimpness beauty
furunbao
星座
TCM
Diabeat
中医
TCM
合肥日语培训班
美日通培训
美日通外语俱乐部
英语培训
美日通
Marytone language school
韩语培训
美日通
合肥美日通
美日通培训
合肥韩语培训
日语J.TEST考试
基础日语
国际日语能力考试
J.TEST实用日语考试
全日制日语
就业日语班
美日通培训
剑桥商务英语
新概念英语培训
どうしてメイリートンを選ぶのでしょう
合肥美日通培训学校
电 话: 0551-3436966 3441282 3120696
地 址: 合肥市徽州大道1022号民航小区写字楼3楼
邮 编: 230000
网 址: http://www.marytone.com
E-mail: marytone@sina.com
合肥日语培训班
美日通培训
美日通外语俱乐部
英语培训
美日通
Marytone language school
韩语培训
美日通
合肥美日通
美日通培训
合肥韩语培训
日语J.TEST考试
基础日语
国际日语能力考试
J.TEST实用日语考试
全日制日语
就业日语班
美日通培训
剑桥商务英语
新概念英语培训
どうしてメイリートンを選ぶのでしょう
合肥美日通培训学校
电 话: 0551-3436966 3441282 3120696
地 址: 合肥市徽州大道1022号民航小区写字楼3楼
邮 编: 230000
网 址: http://www.marytone.com
E-mail: marytone@sina.com
旧液晶屏
旧液晶
二手液晶屏
废旧液
美国留学
留学美国
英国留学
留学英国
加拿大留学
留学加拿大
08成人学位英语
2008上海卷英语答案
常用英语口语
成人高考英语作文
成人学位英语考试
英语
英语口语
英语学习
成人英语
成人英语怎么说
成人自考英语
成人自考英语
上海市职称英语考试
英语自我介绍
英语自我介绍
英语新闻
英语培训中心
英语网站
英语培训学校
英语美文
英语培训机构
英语六级听力
英语口语速成
英语口语练习
英语口语对话王
英语口语等级考试
英语翻译
英语短文
星火英语
08年上海高考英语
08上海英语答案
2008上海卷英语答案
昂立英语培训
常用英语口语
大学英语网络课程
杭州成人英语培训
杭州新东方英语培训
杭州英语培训
剑桥少儿英语学习网
剑桥英语培训
课程设计英语
李阳疯狂英语
李阳疯狂英语口语
免费英语课程
免费英语学习软件
免费英语学习网
免费英语学习网站
如何提高英语口语
如何学好英语口语
如何学习英语
网上英语学习
旺旺英语
旺旺英语学习
韦博英语培训
新东方英语培训班
新东方英语培训学校
新东方英语学习
新概念英语在线学习
星火英语
行业英语日常口语
学习英语的好方法
学习英语的软件
学习英语的网站
在上海学习英语
在线英语词典
在线英语课程
在线英语学习网站
怎么学习英语
怎样提高英语口语
怎样学习英语
中国英语学习网
自考英语专业课程
最好的英语学习网站
成人高等教育英语
成人高考 英语专业
成人高考英语
成人高考英语单词
成人高考英语试卷
成人高考英语试题
成人高考专升本英语
成人基础英语
成人教育 英语
成人如何学习英语
成人如何学英语
成人三级英语辅导
成人学位英语词汇
成人学位英语考试
成人学位英语试题
成人英语
成人英语班
成人英语补习班
成人英语三级词汇
成人英语三级考试
成人英语三级试题
成人英语学习
成人英语学习班
成人英语学校
上海交大英语
上海阶梯英语
上海凯恩英语
上海李阳疯狂英语
上海哪里学英语好
上海牛津英语
上海商务英语培训班
上海少儿英语培训
上海市职称英语考试
上海英语培训中心
上海英语四级
上海英语四级考试
上海英语学校
上海英语中级口译
上海英语自考
上海职称英语考试
上海中考英语作文
英语单词学习
英语短文
英语对话
英语基础学习
英语教学课程
英语精品课程
英语课程视频
英语口试
英语口语
英语口语900句
英语口语mp3
英语口语mp3下载
英语口语测试
英语口语的重要性
英语口语等级考试
英语口语对话范文
英语口语对话王
英语口语范文
英语口语交际
英语口语教材
英语口语教程
英语口语句子
英语口语考试
英语口语考试材料
英语口语课程下载
英语口语练习
英语口语论坛
英语口语培训
英语口语培训班
英语口语情景对话
英语口语试题
英语口语书
英语口语速成
英语口语网
英语口语网站
英语口语文章
英语口语在线学习
英语口语资料
英语口语资料下载
英语聊天室
英语六级考试
英语六级听力
英语培训
英语培训班
英语培训机构
英语培训招生简章
英语培训中心
英语日常口语
英语四级课程
英语听力
英语听力下载
英语网络课程
英语网上课程
英语网站
英语新课程标准
英语新课程培训心得
英语新闻
英语学习班
英语学习电影
英语学习方法
英语学习视频
英语学习视频下载
英语学习网
英语学习下载
英语学习心得
英语学习资料
英语音标
英语音标学习
英语语法学习
英语在线翻译
英语在线学习
英语中级口语
英语专业课程设置
英语字典
英语自我介绍
成人英语教材
成人英语教学
成人英语考级
成人英语零起点
成人英语培训
成人英语培训班
成人英语自学
成人怎么学英语
成人怎样学英语
成人自考英语
商务英语精品课程
商务英语课程
商务英语课程设置
商务英语口语培训
商务英语口语培训班
商务英语口语下载
商务英语培训价格
商务英语培训课程
商务英语学习
商务英语专业
商务英语专业课程/a>
上海成人英语
上海疯狂英语
上海公共英语报名
上海韦博英语
上海新东方暑期英语
上海新东方英语
上海新东方英语培训
上海新东方英语网站
上海新东方英语学校
上海新世界英语
上海学习英语口语
上海学英语
上海英语
上海英语补习班
上海英语等级考试
上海英语家教
上海英语角
上海英语教育
上海英语口语
上海英语口语班
上海英语口语培训
上海英语培班
上海英语培训
上海英语培训班
英语口语学习软件
英语口语学习网
英语口语学习网站
英语学习计划
英语学习技巧
英语学习教材
英语学习课程
英语学习论坛
英语学习频道
昂立英语培训
常用英语口语
大学英语网络课程
08年高考英语上海卷
bec商务英语培训
高级英语
高考英语口语
剑桥商务英语培训
剑桥商务英语培训班
空中英语教室
快速学习英语
免费英语口语
免费英语学习
免费英语在线学习
外贸英语学习
网络英语学习
旺旺英语学习网
旺旺英语学习网站
新东方英语口语
新东方英语培训
新东方英语学习网站
新概念英语培训
学习英语的重要性
研究生英语课程
在线英语口语
在线英语培训
怎样学好英语
怎样学好英语口语
怎样学习英语
成人学士学位英语
成人学位英语
成人学英语
成人英语三级
上海华尔街英语
上海交大昂立英语
上海商务英语
上海商务英语培训
上海英语培训机构
上海英语培训学校
上海英语学习
上海英语中级口译
上海英语自考
英语初级口语
英语词汇学习
英语课程标准
英语口语8000句
英语口语8000句 mp3
英语口语班
英语口语对话
英语口语和听力
英语口语话题
英语口语教学
英语口语句型
英语口语课程
英语口语免费下载
英语口语软件
英语口语视频
英语口语听力
英语口语听力下载
英语口语学习下载
英语口语训练
英语口语自我介绍
英语论坛
英语入门学习
英语三级
英语听力学习
英语网
英语小故事
英语写作
英语学习
英语学习mp3
英语学习软件
英语学习软件下载
英语学习网站
英语学习网址
英语学习资料下载
英语演讲
英语专业
英语专业课程
成人英语考试
成人英语游戏
成人英语自学
商务英语
商务英语的课程
商务英语口语
商务英语口语900句
商务英语培训
商务英语培训班
商务英语学习
商务英语专业
上海昂立英语
上海外国语大学英语
上海韦博国际英语
上海新概念英语
上海新概念英语培训
上海学英语口语
上海英孚英语
上海英语翻译
上海英语口语培训班
上海英语口语学校
英语口语下载
英语口语学习
英语学习辅导报
英语学习工具
2008上海英语高考题
bec商务英语培训
2008上海英语高考题
成人本科学位英语
成人初级英语
成人高考英语词汇
成人高考英语词汇表
成人高考英语语法
成人教育学位英语
成人教育英语考试
成人学位英语作文
成人英语单词
成人英语等级考试
成人英语口语
成人英语培训学校
成人英语四级
成人英语统考
如何练习英语口语
上海昂立英语培训
上海朗阁英语
上海乐加乐少儿英语
上海新东方英语报名
上海新东方英语口语
上海英语进修
上海英语机构
上海英语口译
学习英语的方法
学习英语的好处
英语基础课程
英语考研课程
英语口语材料
英语口语短文
英语口语考试试题
英语口语面试
英语口语作文
英语培训课程
英语学习教程
英语学习经验
英语语音课程
英语阅读
hfer
泵
泵
水泵
水泵
齿轮输油泵
齿轮输油泵
离心泵
离心泵
磁力泵
磁力泵
化工泵
化工泵
隔膜泵
隔膜泵
转子泵
转子泵
螺杆泵
螺杆泵
潜水泵
潜水泵
多级泵
多级泵
循环泵
循环泵
排污泵
排污泵
自吸泵
自吸泵
液下泵
液下泵
管道泵
管道泵
wow account
wow accounts
buy wow account
buy wow accounts
world of warcraft account
澳洲留学论坛
澳洲留学网
法国大学排名
爱尔兰签证
加拿大签证
留学韩国
澳洲留学签证
苏州朗阁
韩国签证
法国留学签证
留学荷兰
苏州留学
留学日本
荷兰留学
法国留学网
意大利签证
青岛留学中介
加拿大留学
法国留学论坛
马来西亚签证
法国留学费用
德国签证
新西兰签证
留学瑞士
mobile Games
Java Games
cell phone games
phone games
泵
泵
水泵
水泵
齿轮输油泵
齿轮输油泵
离心泵
离心泵
磁力泵
磁力泵
化工泵
化工泵
隔膜泵
隔膜泵
转子泵
转子泵
螺杆泵
螺杆泵
潜水泵
潜水泵
多级泵
多级泵
循环泵
循环泵
排污泵
排污泵
自吸泵
自吸泵
液下泵
液下泵
管道泵
管道泵
wow account
wow accounts
buy wow account
buy wow accounts
world of warcraft account
澳洲留学论坛
澳洲留学网
法国大学排名
爱尔兰签证
加拿大签证
留学韩国
澳洲留学签证
苏州朗阁
韩国签证
法国留学签证
留学荷兰
苏州留学
留学日本
荷兰留学
法国留学网
意大利签证
青岛留学中介
加拿大留学
法国留学论坛
马来西亚签证
法国留学费用
德国签证
新西兰签证
留学瑞士
mobile Games
Java Games
cell phone games
phone games
ghv11y
wow gold
wow power leveling
澳洲签证
美国留学签证
美国留学中介
美国大学排名
日本留学费用
日本留学中介
日本留学签证
日本留学论坛
日本留学申请
日本大学排名
澳大利亚签证
美国留学网
日本留学网
浙江留学中介
浙江留学中介
美国签证
法国签证
英国签证
杭州留学中介
gkh24m
论文发表
上海翻译公司
上海翻译
英语培训
英语口语
神经性皮炎
皮炎
湿疹
荨麻疹
慢性荨麻疹
藏獒
液压缸
油缸
破碎机
北京旅游
北京旅行社
条码机
条码打印机
条形码打印机
阴茎增大
伟哥
发酵罐
冰淇淋
加盟店
冷饮店
冰淇淋机
冰淇淋粉
冰激凌
大豆床上用品
保健内衣
羊绒内衣
大豆纤维面料
团购礼品
移民
投资移民
商业移民
技术移民
美国移民
澳洲移民
德国移民
英国移民
加拿大移民
热电偶插头
测温线
热电阻
硅碳棒
除湿机
抽湿机
工业除湿机
空气净化器
空气净化机
吸塑机
纸管机
无缝管
合金管
无缝管
无缝钢管
高血压
无线网桥
无线监控
产品设计
men spa beijing
men massage beijing
pearl jewelry
Beijing Tour
china Tour
beijing Tour
china Tour
beijing Tour
China Necklace Wholesale
China Bracelet Wholesale
China Ring wholesale
China gemstone beads wholesale
China Jewelry Accessories wholesale
China Semiprecious beads wholesale
replica handbag
replica tiffany
replica watches
louis vuitton replica
chanel replica
gucci replica
Chinese language
Chinese learn
learning Chinese
learn mandarin
ecosway
gasifier
coal gas
coal gasification
pro dj cases
beijing tour
beijing tours
beijing travel
beijing tours
china tour
beijing
china tours
china travel
beijing china
china beijing
beijing hotel
beijing hotels
China Flights
carved fireplace
stone bathtub
marble fountain
marble bench
marble fireplace
marble sculpture
marble columns
marble lions
marble doorway
marble gazebo
marble pillar
marble fireplace surround
marble statue
marble bathtub