假设现在要创建一个简单的超市销售系统,顾客将毛巾、饼干、酸奶等物品(Item)加入购物车(Shopping_Cart),在收银台(Checkout)人工(Manual)或自动(Auto)地将购物车中每个物品的价格汇总到总价格后结帐。这一业务需求的类图(方法略)设计如下图所示,采用了( )模式。其中( )定义以一个Checkout对象为参数的accept操作,由子类实现此accept操作。此模式为(请作答此空),适用于( )。A.创建型对象模式B.结构型对象模式C.行为型类模式D.行为型对象模式

假设现在要创建一个简单的超市销售系统,顾客将毛巾、饼干、酸奶等物品(Item)加入购物车(Shopping_Cart),在收银台(Checkout)人工(Manual)或自动(Auto)地将购物车中每个物品的价格汇总到总价格后结帐。这一业务需求的类图(方法略)设计如下图所示,采用了( )模式。其中( )定义以一个Checkout对象为参数的accept操作,由子类实现此accept操作。此模式为(请作答此空),适用于( )。


A.创建型对象模式
B.结构型对象模式
C.行为型类模式
D.行为型对象模式

参考解析

解析:访问者模式包含如下角色:Vistor :抽象访问者ConcreteVisitor:具体访问者Element: 抽象元素ConcreteElement:具体元素ObjectStructure:对象结构

相关考题:

图5-6UML类图所示意的设计模式的意图是(47)。A.为特定的客户(或情况)提供特定系列的对象B.定义一系列的算法并将它们一个个封装起来,使它们可以相互替换C.将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示D.定义一个用于创建对象的接口,让子类决定实例化哪一个类

阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。【说明】某电子商务系统采用以数据库为中心的集成方式改进购物车的功能,详细需求如下:(1)加入购物车。顾客浏览商品,点击加入购物车,根据商品标识从商品表中读取商品信息,并更新购物车表。(2)浏览购物车。顾客提交浏览购物车请求后,显示出购物车表中的商品信息。(3)提交订单。顾客点击提交订单请求,后台计算购物车表中商品的总价(包括运费)加入订单表,将购物车表中的商品状态改为待付款,显示订单详情。若商家改变价格,则刷新后可看到更改后的价格。(4)改变价格。商家查看订购自家商品的订单信息,根据特殊优惠条件修改价格,更新订单表中的商品价格。(5)付款。顾客点击付款后,系统先根据顾客表中关联的支付账户,将转账请求(验证码、价格等)提交给支付系统(如信用卡系统)进行转账;然后根据转账结果返回支付状态并更改购物车表中商品的状态。(6)物流跟踪。商家发货后,需按订单标识添加物流标识(物流公司、运单号);然后可根据顾客或商家的标识以及订单标识,查询订单表中的物流标识,并从相应物流系统查询物流信息。(7)生成报表。根据管理员和商家设置的报表选项,从订单表、商品表以及商品分类表中读取数据,调用第三方服务Crystal Reports生成相关报表。(8)维护信息。管理员维护(增、删、改、查)顾客表、商品分类表和商品表中的信息。现采用结构化方法实现上述需求,在系统分析阶段得到如图1-1所示的顶层数据流图和图1-2所示的O层数据流图。图1-1 顶层数据流图【问题1】使用说明中的词语,给出图1-1中的实体E1~E4的名称。【问题2】使用说明中的词语,给出图1-2中的数据存储D1~D4的名称。【问题】图1-2中缺失了数据流,请用说明或图1-2中的词语,给出其起点和终点。【问题4】根据说明,给出数据流“转账请求”、“顾客订单物流查询请求”和“商家订单物流查询请求”的各组成数据项。

下列关于单例设计模式的描述中,正确的是() A、将一个类设计为单例设计模式,在其他类中可以创建这个类对象B、将一个类设计为单例设计模式,必须私有其空参数构造方法,并且还不能定义有参数的构造方法C、将一个类设计为单例设计模式,需要定义一个静态的成员方法将本类创建的对象返回给调D、以上答案都不对

假设现在要创建一个简单的超市销售系统,顾客将毛巾、饼干、酸奶等物品(Item)加入购物车(Shopping_Cart),在收银台(Checkout)人工(Manual)或自动(Auto)地将购物车中每个物品的价格汇总到总价格后结帐。这一业务需求的类图(方法略)设计如下图所示,采用了( )模式。其中(请作答此空)定义以一个Checkout对象为参数的accept操作,由子类实现此accept操作。此模式为( ),适用于( )。A.ItemB.Shopping_CartC.CheckoutD.Manual和Auto

行为型设计模式描述类或对象怎样交互和怎样分配职责,涉及算法和对象职责的分配,其中()模式将一个语言的文法表示为一个类层次,每个类定义一个解释操作,来解释语言中的句子A.解释器B.模版方法C.中介者D.责任链

假设现在要创建一个简单的超市销售系统,顾客将毛巾、饼干、酸奶等物品(Item)加入购物车(Shopping_Cart),在收银台(Checkout)人工(Manual)或自动(Auto)地将购物车中每个物品的价格汇总到总价格后结帐。这一业务需求的类图(方法略)设计如下图所示,采用了(请作答此空)模式。其中( )定义以一个Checkout对象为参数的accept操作,由子类实现此accept操作。此模式为( ),适用于( )。A.观察者(Observer)B.访问者(Visitor)C.策略(Strategy)D.桥接器(Bridge)

假设现在要创建一个简单的超市销售系统,顾客将毛巾、饼干、酸奶等物品(Item)加入购物车(Shopping_Cart),在收银台(Checkout)人工(Manual)或自动(Auto)地将购物车中每个物品的价格汇总到总价格后结帐。这一业务需求的类图(方法略)设计如下图所示,采用了( )模式。其中( )定义以一个Checkout对象为参数的accept操作,由子类实现此accept操作。此模式为( ),适用于(请作答此空)。A.必须保存一个对象在某一个时刻的(部分)状态B.想在不明确指定接收者的情况下向多个对象中的一个提交一个请求C.需要对一个对象结构中的对象进行很多不同的并且不相关的操作D.在不同的时刻指定、排列和执行请求

第五题 阅读以下说明和Java代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】以下Java代码实现一个超市简单销售系统中的部分功能,顾客选择图书等物件 (Item)加入购物车(ShoppingCart),到收银台(Cashier)对每个购物车中的物品统计其价格进行结账。设计如图5-1所示类图。问题:5.1 【Java代码】interface Item{ public void accept(Visitor visitor); public double getPrice();}class Book (1){ private double price; public Book(double price){(2);} public void accept(Visitor visitor){ //访问本元素 (3); } public double getPrice() { return price; }}//其它物品类略 interface Visitor { public void visit(Book book); //其它物品的visit方法}class Cashier(4){ private double totalForCart; //访问Book类型对象的价格并累加 (5){ //假设Book类型的物品价格超过10元打8折 if(book.getPrice() totalForCart+=book.getPrice(); } else totalForCart+=book.getPrice()*0.8;}//其它visit方法和折扣策略类似,此处略public double getTotal() { return totalForCart; }}class ShoppingCart { //normal shopping cart stuff private java.util.ArrayListitems=new java.util.ArrayList<>(); public double calculatePrice() { Cashier visitor=new Cashier(); for(Item item:items) { (6); } double total=visitor.getTotal(); return total; } public void add(Item e) { this.items.add(e); }}

下图所示为 ( ) 设计模式,适用于 (请作答此空) 。A.有多个对象可以处理一个请求,在运行时刻自动确定由哪个对象处理B.想使用一个已经存在的类,而其接口不符合要求C.类的抽象和其实现之间不希望有一个固定的绑定关系D.需要为一个复杂子系统提供一个简单接口

自动售货机根据库存、存放货币量、找零能力、所选项目等不同,在货币存入并进行选择时具有如下行为:交付产品不找零:交付产品找零:存入货币不足而不提供任何产品;库存不足而不提供任何产品。这一业务需求适合采用( )模式设计实现,其类图如下图所示,其中( )是客户程序使用的主要接口,可用状态来对其进行配置。此模式为(请作答此空),体现的最主要的意图是( )。 A创建型对象模式 B结构型对象模式 C行为型类模式 D行为型对象模式

假设现在要创建一个简单的超市销售系统,顾客将毛巾、饼干、酸奶等物品(Item)加入购物车(Shopping_Cart),在收银台(Checkout)人工(Manual)或自动(Auto)地将购物车中每个物品的价格汇总到总价格后结帐。这一业务需求的类图(方法略)设计如下图所示,采用了( )模式。其中( )定义以一个Checkout对象为参数的accept操作,由子类实现此accept操作。此模式为(请作答此空),适用于( )。A.创建型对象模式B.结构型对象模式C.行为型类模式D.行为型对象模式

下图所示为 ( ) 设计模式,适用于 (请作答此空) 。A.一个系统要由多个产品系列中的一个来配置时B.当一个类希望由它的子类来指定它所创建的对象时C.当创建复杂对象的算法应该独立于该对象的组成部分及其装配方式时D.当一个系统应该独立于它的产品创建、构成和表示时

第六题 阅读下列说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明 】以下C++代码实现一个超市简单销售系统中的部分功能,顾客选择图书等物品(Item)加入购物车(ShoppingCart),到收银台(Cashier)对每个购物车中的物品统计其价格进行结账,设计如图6-1所示类图。using namespace std;class Book;class Visitor {public: virtual void visit(Book* book)=0; //其它物品的visit方法};class Item {public:virtual void accept(Visitor* visitor)=0; virtual double getPrice()=0;};class Book (1){private: double price;public: Book (double price){ //访问本元素 (2); } void accept(Visitor* visitor) { (3); } double getPrice() { return price; }};class Cashier(4){private; double totalForCart;public: //访问Book类型对象的价格并累加 (5){ //假设Book类型的物品价格超过10元打8折 if(book->getPrice() totalForCart+=book->getPrice(); } else totalForCart+=book->getPrice()*0.8; } //其它visit方法和折扣策略类似,此处略 double getTotal() { return totalForCart; }};class ShoppingCart {private: vectoritems;public: double calculatePrice() { Cashier* visitor=new Cashier(); for(int i=0;i (6); } double total=visitor->getTotal(); return total; } void add(Item*e) { items.push_back(e); }};

[说明]某电子商务系统采用以数据库为中心的集成方式改进购物车的功能,详细需求如下:1.加入购物车。顾客浏览商品,点击加入购物车,根据商品标识从商品表中读取商品信息,并更新购物车表。2.浏览购物车。顾客提交浏览购物车请求后,显示出购物车表中的商品信息。3.提交订单。顾客点击提交订单请求,后台计算购物车表中商品的总价(包括运费)加入订单表,将购物车表中的商品状态改为待付款,显示订单详情。若商家改变价格,则刷新后可看到更改后的价格。4.改变价格。商家查看订购自家商品的订单信息,根据特殊优惠条件修改价格,更新订单表中的商品价格。5.付款。顾客点击付款后,系统先根据顾客表中关联的支付账户,将转账请求(验证码、价格等)提交给支付系统(如信用卡系统)进行转账;然后根据转账结果返回支付状态并更改购物车表中商品的状态。6.物流跟踪。商家发货后,需按订单标识添加物流标识(物流公司、运单号);然后可根据顾客或商家的标识以及订单标识,查询订单表中的物流标识,并从相应物流系统查询物流信息。7.生成报表。根据管理员和商家设置的报表选项,从订单表、商品表以及商品分类表中读取数据,调用第三方服务Crystal Reports生成相关报表。8.维护信息。管理员维护(增、删、改、查)顾客表、商品分类表和商品表中的信息。现采用结构化方法实现上述需求,在系统分析阶段得到如图1所示的顶层数据流图1和图2所示的0层数据流图。1、使用说明中的词语,给出图1中的实体E1~E4的名称。2、使用说明中的词语,给出图2中的数据存储D1~D4的名称。3、图2中缺失了数据流,请用说明或图2中的词语,给出其起点和终点。4、根据说明,给出数据流“转账请求”、“顾客订单物流查询请求”和“商家订单物流查询请求”的各组成数据项。

下图是( )设计模式的类图,该设计模式的目的是(请作答此空),图中,ConcreteCommand和Command之间是( )关系,Invoker和Command之间是( )关系。A.将一个请求封装成一个对象,从而使得可以用不同的请求对客户进行参数化,队请求排队或记录请求日志,以及支持可撤销的操作B.将一个类的接口适配成用户所期待的C.动态地给一个对象附加额外的职责,不必通过子类就能灵活地增加功能D.为一个对象提供代理以控制该对象的访问

下图是( )设计模式的类图,该设计模式的目的是(请作答此空),图中,Abstraction和RefinedAbstraciton之间是( )关系,Abstraction和Implementor之间是( )关系。A.将一个类的接口转换为客户期望的另一种接口,使得原本不匹配的接口而无法合作的类可以一起工作B.将一个抽象与其实现分离开,以便两者能够各自独立地演变C.动态地给一个对象附加额外的职责,不必通过子类就能灵活地增加功能D.为一个对象提供代理以控制该对象的访问

假设现在要创建一个 Web应用框架,基于此框架能够创建不同的具体 Web应用,比如博客、 新闻网站和网上商店等;并可以为每个 Web 应用创建不同的主题样式,如浅色或深色等。这一 业务需求的类图设计适合采用(如下图所示)模式( )。其中( )是客户程序使用的 主要接口,维护对主题类型的引用。此模式为( ),体现的最主要的意图是(请作答此空)。A.将抽象部分与其实现部分分离,使它们都可以独立地变化B.动态地给一个对象添加一些额外的职责C.为其他对象提供一种代理以控制对这个对象的访问D.将一个类的接口转换成客户希望的另外一个接口。

阅读下列说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】以下C++代码实现一个超市简单销售系统中的部分功能,顾客选择图书等物品(Item)加入购物车(ShoppingCart),到收银台(Cashier)对每个购物车中的物品统计其价格进行结账,设计如图6-1所示类图。【C++代码】using namespace std;class Book;class Visitor {public: virtual void visit(Book* book)=0; //其它物品visit方法}; class Item {public:virtual void accept(Visitor* visitor)=0; virtual doublegetPrice()=0;};class Book (1){private: double price;public: Book (double price){ //访问本元素 (2); } void accept(Visitor* visitor) { (3); }double getPrice(){ returnprice; }};class Cashier(4){private; double totalForCart;public: //访问Book类型对象的价格并累加 (5){ //假设Book类型的物品价格超过10元打8折 if(book->getPrice()getPrice(); } else totalForCart+=book->getPrice()*0.8; } //其它visit方法和折扣策略类似,此处略 double getTotal() { return totalForCart; }};class ShoppingCart {private: vectoritems;public: double calculatePrice() { Cashier* visitor=new Cashier(); for(int i=0;i getTotal(); return total; } void add(Item*e) { items.push_back(e); }};

阅读以下说明和Java代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】以下Java代码实现一个超市简单销售系统中的部分功能,顾客选择图书等物件 (Item)加入购物车(ShoppingCart),到收银台(Cashier)对每个购物车中的物品统计其价格进行结账。设计如图5-1所示类图。【Java代码】interface Item{ public void accept(Visitor visitor); public double getPrice();}class Book (1){ private double price; public Book(double price){(2);} public void accept(Visitor visitor){ //访问本元素 (3); } public double getPrice() { return price; }}//其它物品类略 interface Visitor { public void visit(Book book); //其它物品的visit方法 } class Cashier(4){ private double totalForCart; //访问Book类型对象的价格并累加 (5){ //假设Book类型的物品价格超过10元打8折 if(book.getPrice()(); public double calculatePrice() { Cashier visitor=newCashier(); for(Item item:items) { (6); } doubletotal=visitor.getTotal(); return total; } public void add(Item e) { this.items.add(e); }}

自动售货机根据库存、存放货币量、找零能力、所选项目等不同,在货币存入并进行选择时具有如下行为:交付产品不找零 :交付产品找零:存入货币不足而不提供任何产品;库存不足而不提供任何产品。这一业务需求适合采用(44)模式设计实现,其类图如下图所示,其中(45)是客户程序使用的主要接口,可用状态来对其进行配置。此模式为(46),体现的最主要的意图是(47)。A.创建型对象模式 B.结构型对象模式C.行为型类模式 D.行为型对象模式

假设现在要创建一个 Web应用框架,基于此框架能够创建不同的具体 Web应用,比如博客、 新闻网站和网上商店等;并可以为每个 Web 应用创建不同的主题样式,如浅色或深色等。这一 业务需求的类图设计适合采用(如下图所示)模式( )。其中( 请作答此空)是客户程序使用的 主要接口,维护对主题类型的引用。此模式为( ),体现的最主要的意图是( )。A.WebapplicationB.BlogC.ThemeD.Light

假设现在要创建一个 Web应用框架,基于此框架能够创建不同的具体 Web应用,比如博客、 新闻网站和网上商店等;并可以为每个 Web 应用创建不同的主题样式,如浅色或深色等。这一 业务需求的类图设计适合采用(请作答此空)模式(如下图所示)。其中( )是客户程序使用的 主要接口,维护对主题类型的引用。此模式为( ),体现的最主要的意图是( )。A.观察者(Observer)B.访问者(Visitor)C.策略(Strategy) D.桥接(Bridge)

下图是( )设计模式的类图,该设计模式的目的是(请作答此空),图中,Decorator和Component之间是( )关系,ConcreteDecorator和Decorator之间是( )关系。A.将一个类的接口转换为客户期望的另一种接口,使得原本因接口不匹配而无法合作的类可以一起工作B.将一个抽象与其实现分离开,以便两者能够各自独立地演变C.为一个对象提供代理以控制该对象的访问D.动态地给一个对象附加额外的职责,不必通过子类就能灵活地增加功能

假设现在要创建一个 Web应用框架,基于此框架能够创建不同的具体 Web应用,比如博客、 新闻网站和网上商店等;并可以为每个 Web 应用创建不同的主题样式,如浅色或深色等。这一 业务需求的类图设计适合采用(如下图所示)模式( )。其中( )是客户程序使用的 主要接口,维护对主题类型的引用。此模式为(请作答此空),体现的最主要的意图是( )。A.创建型对象模式B.结构型对象模式C.行为型类模式D.行为型对象模式

某些设计模式会引入总是被用作参数的对象。例如( )对象是一个多态accept 方法的参数。A.Visitor B.CommandC.MementoD.Observer

欲开放一个绘图软件,要求使用不同的绘图程序绘制不同的图形,该绘图软件的扩展性要求将不断扩充新的图形和新的绘图程序,以绘制直线和图形为例,得到如下图所示的类图,该设计采用( )模式将抽象部分与其实现部分分离,使它们都可以独立的变化。其中( )定义了实现类接口,该模式适用于( )的情况,该模式属于(请作答此空)模式。A.创建型对象B.结构型对象C.行为型对象D.结构类型

关于模式适用性,在以下情况不适合使用FACTORY METHOD模式?()A、当一个类不知道它所必须创建的对象的类的时候B、当一个类希望由它的子类来指定它所创建的对象的时候C、当你提供一个产品类库,而只想显示它们的接口而不是实现时D、当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候

单选题购物车设计:顾客在超市中将选择的商品,如苹果、图书等放在购物车中,然后到收银员处付款。在购物过程中,顾客需要对这些商品进行访问,以便确认这些商品的质量,之后收银员计算价格时也需要访问购物车内顾客所选择的商品。购物车设计可以使用()来设计该购物过程。A工厂方法模式B访问者模式C模板方法模式D责任链