Skip to content

软件设计师 下午试卷 案例 第 6 题答案汇总 #8

@junhey

Description

@junhey

2017年上半年
(1)abstract void buildParts();
(2)this.pizzaBuilder=pizzaBuilder
(3)pizzaBuilder.buildParts()
(4)waiter.setPizzaBuilder(hawaiian_pizzabuilder)
(5)waiter.construct()

2016年下半年
(1)ticket.printInvoice()
(2)super.printInvoice()
(3)super.printInvoice()
(4)new HeadDecorator(new FootDecorator(t))
(5)new HeadDecorator(new FootDecorator(null))

2016年上半年
(1)Address address;
(2)address.street();
(3)address.zip();
(4)address.city();
(5)DutchAddress addrAdapter=new DutchAddressAdaptor(addr)
本题考查Adapter(适配器)模式的基本概念和应用。
Adapter模式的设计意图是,将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
Adapter模式有两种实现方式。类适配使用多重继承对一个接口与另一个接口进行匹配,其结构如图6-2所示。

2015年下半年
(1) doubleacceptCash(double money)
(2) cs=new CashNormal()
(3) cs=new CashReturn(300,100)
(4) cs=new CashDiscount(0.8)
(5) return cs.acceptCash(money)
本题考查策略(Strategy)模式的基本概念和应用。
Strategy模式的设计意图是,定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。此模式使得算法可以独立于使用它们的客户而变化

2015年上半年
(1)void visit(Book p_book)
(2)void visit(Article p_article)
(3)void accept(LibraryVisitor visitor)
(4)visitor.visit(this)
(5)visitor.visit(this)
解析:本题考查Visitor (访问者)模式的基本概念和应用。
访问者模式是行为设计模式中的一种。行为模式不仅描述对象或类的模式,还描述它们之间的通信模式。这些模式刻画了在运行时难以跟踪的复杂的控制流。 

2014年下半年
(1)interface Command
(2)light.on()
(3)light.off()
(4)onCommands[slot]
(5)offCommands[slot]
(6)onCommands[slot].execute()
(7)offCommands[slot].execute()
本题考查命令(Command)模式的基本概念和应用。
命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。
在软件系统中,行为请求者与行为实现者之间通常呈现一种紧耦合的关系。但在某些场合,比如要对行为进行记录撤销重做事务等处理,这种无法抵御变化的紧耦合是不合适的。这种情况下,使用command模式将行为请求者与行为实现者进行解耦。

2014年上半年

(1) Subject
(2) observer.update(temperature, humidity, cleanness)
(3) notifyObservers()
(4) measurementsChanged()
(5) Observer
(6) envData.registerObserver(this)
本题考查观察者(Observer)模式的概念及应用。观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。Observer模式适用于: ①当一个抽象模型有两个方面,其中一个方面依赖于另一个方面。将这两者封装在独立的对象中以使它们可以各自独立地改变和复用。②当对一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变时。③当一个对象必须通知其他对象,而它又不能假定其他对象是谁,即:不希望这些对象是紧耦合的。

2013年下半年
(1) interface
(2) void draw Line(doublexl,doubleyl,doublex2,doubley2)
(3) void draw Circle(doublex,doubley,doubler)
(4) DPI.draw_a_circle(x,y,r)
(5) DP2.draw circle(x,y,r)
(6) abstract public void draw()
本题考查桥接(Bridge)模式的概念及应用。
Bridge模式可以将复杂的组件分成两个独立的但又相关的继承层次结构:功能性的抽象和内部实现。改变组件的这两个层次结构很简单,以至于它们可以相互独立地变化。当具有抽象的层次结构和相应的实现层次结构时,Bridge模式是非常有用的。除了可以将抽象和实现组合成许多不同的类,该模式还可以以动态组合的独立类的形式实现这些抽象和实现。

2013年上半年
(1) implements
(2) WorkExperience obj = new WorkExperience()
(3) implements
(4) (WorkExperience)work.Clone()
(5) new Resume(this.work)
(6) (Resume)a.Clone()
本题考査原型(Prototype)模式的概念及应用。
Prototype模式是一种对象创建型模式。Prototype模式通过给出一个原型对象来指明所要创建的对象的类型,然后通过复制这个原型对象的方法,创建出更多同类型的对象。 原型模式又可以分为两种:浅克隆和深克隆。浅克隆仅仅复制所考虑的对象,而不复制它所引用的对象,也就是其中的成员对象并不复制;深克隆除了对象本身被复制外,对象包含的引用也被复制,即成员对象也被复制。
原型模式的优点是:
(1) 向客户隐藏制造新实例的复杂性;
(2) 提供让客户能够产生未知类型对象的选项;
(3) 在某些环境下,复制对象比创建新对象更有效。
在一个复杂的类层次中,当系统必须从其中的许多类型创建新对象时,可以考虑原型模式。使用原型模式的缺点是:对象的复制有时相当复杂。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions