当前位置:文档之家› 设计模式期末考试复习

设计模式期末考试复习

设计模式期末考试复习
设计模式期末考试复习

一What is design pattern ?

模式是在物体或事件上,产生的一种规律变化与自我重复的样式与过程。在模式之中,某些固定的元素不断以可预测的方式周期性重现。

What is design pattern ?

广义讲,软件设计模式是可解决一类软件问题并能重复使用的软件设计方案;

狭义讲,设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。是在类和对象的层次描述的可重复使用的软件设计问题的解决方案;[面向对象]

设计模式体现的是程序整体的构思,所以有时候它也会出现在分析或者是概要设计阶段

设计模式的核心思想是通过增加抽象层,把变化部分从那些不变部分里分离出来GOF(Gang of Four)的设计模式

定义:设计模式是在一个上下文中,对一个问题的解决方案,及其能够达到的效果。即模式的四要素:名称、上下文与问题、解决方案、效果。

分类:23种设计模式:

创建型:5种

结构型:7种

行为型:11种

四要素:

1.模式名称(Pattern Name)

2.问题(Problem):描述应该在何时使用模式。解释了设计问题和问题存在的前因后果,可

能还描述模式必须满足的先决条件;

3.解决方案(Solution):描述了设计的组成成分、相互关系及各自的职责和协作方式。模

式就像一个模板,可应用于多种场合,所以解决方案并不描述一个具体的设计或实现,而是提供设计问题的抽象描述和解决问题所采用的元素组合(类和对象);

4.效果(consequences ):描述模式的应用效果及使用模式应权衡的问题

都有哪些设计模式?

GOF共提出23种设计模式:

创建型:5种

结构型:7种

行为型:11种

Creational Patterns用来创建对象的模式,抽象了实例化过程

1.Factory Method [ 工厂模式]

父类负责定义创建对象的公共接口,而子类则负责生成具体对象,将类的实例化操作延迟到子类中完成;

2.Abstract Factory [ 抽象工厂模式]

为一个产品族提供统一的创建接口。当需要这个产品族的某一系列的时候,可以从抽象工

厂中选出相应的系列创建一个具体的工厂类;

3.Singleton [ 单例模式]

保证一个类有且仅有一个实例,提供一个全局访问点;

4.Builder [ 建造者模式]

将复杂对象创建与表示分离,同样的创建过程可创建不同的表示。允许用户通过指定复杂对象类型和内容来创建对象,用户不需要知道对象内部的具体构建细节;

5.Prototype [ 原型模式]

通过“复制”一个已经存在的实例来返回新的实例(不新建实例)。被复制的实例就是“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据;

Structural Patterns

结构型模式讨论的是类和对象的结构,它采用继承机制来组合接口或实现(类结构型模式),或者通过组合一些对象来实现新的功能(对象结构型模式)

1.Adapter [适配器模式]

将一个类的接口适配成用户所期待的接口。一个适配器允许因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包装在一个已存在的类中;

2.Bridge [桥接模式]

桥接模式的用意是将问题的抽象和实现分离开来实现,通过用聚合代替继承来解决子类爆炸性增长的问题;

https://www.doczj.com/doc/6811238167.html,posite [ 组合模式]

定义一个接口,使之用于单一对象,也可以应用于多个单一对象组成的对象组;

4.Decorator [ 装饰模式]

给对象动态添加额外的职责,就好像给一个物体加上装饰物,完善其功能;

5.Fa?ade [ 外观模式]

外观模式为子系统提供了一个更高层次、更简单的接口,从而降低了子系统的复杂度,使子系统更易于使用和管理。外观承担了子系统中类交互的责任

6.Flyweight [ 享元模式]

Flyweight是一个共享对象,它可以同时在不同上下文(Context)使用;

7.Proxy [ 代理模式]

在软件系统中,有些对象有时候由于跨越网络或者其他障碍,而不能够或者不想直接访问另一个对象,直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切,这就是代理(Proxy)模式;

Behavioral Patterns

着力解决的是类实体之间的通讯关系,希望以面向对象的方式描述一个控制流程。

1.Chain of Responsibility [ 责任链模式]

很多对象由每一个对象对其下一个对象的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使系统可以在不影响客户端的情况下动态的重新组织链和分

配责任;

https://www.doczj.com/doc/6811238167.html,mand [ 命令模式]

将请求及其参数封装成一个对象,作为命令发起者和接收者的中介,可以对这些请求排队或记录请求日志,以及支持可撤销操作;

3.Interpreter [ 解释器模式]

给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子;

4.Iterator [ 迭代器模式]

提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示;

5.Mediator [ 中介者模式]

用一个中介对象来封装一系列的对象交互;

6.Memento [ 备忘录模式]

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态;

7.Observer [ 观察者模式]

定义了对象之间一对多的依赖,当这个对象的状态发生改变的时候,多个对象会接受到通知,有机会做出反馈;

8.State [ 状态模式]

允许一个“对象”在其内部状态改变的时候改变其行为,即不同的状态,不同的行为

9.Strategy [ 策略模式]

定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化;

10.Template [ 模板模式]

定义了一个算法步骤,并允许子类为一个或多个步骤提供实现。子类在不改变算法架构的情况下,可重新定义算法中某些步骤;

11.Visitor [ 访问者模式]

表示一个作用于某对象结构中的各元素的操作。可以在不改变各元素的类的前提下定义作用于这些元素的新操作;

面向对象方法

抽象(Abstraction)

封装(Encapsulation)

多态(Polymorphism)

继承(Inheritance)

Object-Oriented Method

类的功能要单一,体现了抽象

加强内聚,松散耦合

好的封装性

类的粒度要合理

实现类不能依赖使用类

应考虑灵活性,也就是可配置,可维护

要考虑性能,可伸缩性

要考虑后续的变化,也就是可扩展性

要考虑合理的复用,这是平衡的艺术

要合理的考虑接口和抽象类的使用

尽量减少类间的交互次数和交互的信息量

访问对象必须通过接口,不能绕过接口直接访问

OO design principles

开闭原则(OCP)

单一职责原则(SRP)

里氏替换原则(LSP)

依赖倒置原则(DIP)

接口隔离原则(ISP)

迪米特原则(LoD)

单一职责原则(Single Responsibility Principle, SRP)

定义:就一个类而言,应该仅有一个引起它变化的原因;

每一个引起类变化的原因就是一个职责,当类具有多职责时,应把多余职责分离出去,分别创建一些类来完成每一个职责;

每一个职责都是一个变化的轴线,当需求变化时会反映为类的职责的变化;

里氏替换原则(Liskov Substitution Principle, LSP)

定义:所有引用基类的地方必须能透明地使用其子类的对象

里氏替换原则是继承复用的基石,只有当派生类可以替换掉其基类,而软件功能不受影响时,基类才能真正被复用,派生类也才能够在基类的基础上增加新的行为LSP本质:在同一个继承体系中的对象应该有共同的行为特征

里氏替换原则包含了两层重要含义:

子类必须完全的实现父类的方法;

子类可以有自己的个性

依赖倒置原则(Dependence Inversion Principle, DIP)

定义:高层模块不应依赖低层模块,二者都应该依赖于抽象

高层模块只应该包含重要的业务模型和策略选择,低层模块则是不同业务和策略的实现;高层抽象不依赖高层和低层模块的具体实现,最多只依赖于低层的抽象;

低层抽象和实现也只依赖于高层抽象;

辅助原则

任何变量都不应该持有一个指向具体类的引用;

任何类都不应该从具体类派生;

任何方法都不应覆盖其任何基类中已经实现了的方法;

DIP引例—驾驶汽车

依赖倒置原则(DIP)另一种理解:

客户类和服务类都应该依赖于抽象(接口),并且客户类拥有接口。

依赖是有方向的,客户类依赖于服务类。

DIP引例—驾驶汽车

DIP引例—驾驶汽车

接口隔离原则(Interface Separate Principle, ISP)

定义:类间的依赖关系应该建立在最小的接口上。

多个和客户相关的接口要好于一个通用接口;

如果一个类有几个使用者,与其让这个类载入所有使用者需要使用的所有方法,还不如为每个使用者创建一个特定接口,并让该类分别实现这些接口;

ISP引例—星探查询

ISP引例—星探查询

接口隔离原则(ISP)

迪米特原则(Law of Demeter,LoD)

LoD引例—人数清点

LoD引例—人数清点

LoD引例—人数清点

开闭原则(Open-Closed Principle , OCP)

定义:软件对扩展是开放的,对修改是关闭的。开发一个软件时,应可以对其进行功能扩展(开放),在进行扩展的时候,不需要对原来的程序进行修改(关闭)

好处:在软件可用性上非常灵活。可以在软件完成后对软件进行扩展,加入新的功能。这样,软件就可通过不断的增加新模块满足不断变化的新需求

由于不修改软件原来的模块,不用担心软件的稳定性

实现的主要原则

抽象原则:把系统的所有可能的行为抽象成一个底层;由于可从抽象层导出一个或多个具体类来改变系统行为,因此对于可变部分,系统设计对扩展是开放的;

可变性封装原则:对系统所有可能发生变化的部分进行评估和分类,每一个可变的因素都单独进行封装;

COP引例—书店销售书籍

COP引例—书店销售书籍

项目投产了,书籍正常销售出去,书店也盈利了。从2008年开始,全球经济都开始下滑,

对零售业影响还是比较大,书店为了生存开始打折销售:所有40元以上的书籍9折销售,其他的8折销售。对已经投产的项目来说,这就是一个变化,我们来看看这样的一个需求变化,我们该怎么去应对,有三种方法可以解决这个问题:

修改接口:在IBook上新增加一个方法getOffPrice();

修改实现类:修改NovelBook类中的方法,直接在getPrice()中实现打折处理;

通过扩展实现变化。增加一个子类OffNovelBook,覆写getPrice方法;

COP引例—书店销售书籍

二The Strategy Pattern

策略模式:

定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

传统策略算法实现的缺点:

1.使用算法的类复杂而难于维护;

2.不同的时候需要不同的算法;

3.算法的实现和使用算法的对象紧紧耦合在一起;

将每种算法的实现都剥离出来构成一个个独立算法对象,再从这些对象中抽象出公共算法接口,最后将算法接口组合到使用算法类中。

策略模式的意图和适用性

意图:定义一系列算法,一个个进行封装,并使其可相互替换。策略模式使得算法可独立于使用它的客户而变化

适用场合

在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使得对象变得异常复杂;而且有时候支持不同的算法也是一个性能负担;如何在运行时根据需要透明地更改对象的算法?如何将算法与对象本身解耦,从而避免上述问题?策略模式很好地解决了这两个问题;

策略模式的结构

strategy

策略模式的参与者

Strategy

定义所有支持算法的公共接口

Context使用该接口调用某ConcreteStrategy定义的算法ConcreteStrategy

以Strategy接口实现某具体算法

Context

用一个ConcreteStrategy对象来配置

维护一个对Strategy对象的引用

可定义一个接口来让Strategy访问它的数据

策略模式的效果分析

算法和使用算法的对象相互分离,客户程序可以在运行时动态选择算法,代码复用性好,便于修改和维护;

用组合替代继承,效果更好。若从Context直接生成子类,也可以实现对象的多种算法,但继承使子类和父类紧密耦合,使Context类难以理解、难以维护和难以扩展。策略模式采用组合方式,使Context和Strategy之间的依赖很小,更利于代码复用;

消除了冗长的条件语句序列,将不同的算法硬编码进一个类中,选择不同的算法必然要使用冗长的条件语句序列,采用策略模式将算法封装在一个个独立的Strategy类中消除了这些条件语句;

策略模式的效果分析

算法的动态选择,Strategy模式可以提供相同行为的不同实现,客户可以根据不同的上下文从不同的策略中选择算法;

客户必须了解不同的Strategy,一个客户要选择一个合适的Strategy就必须知道这些Strategy 到底有什么不同;

Strategy和Context之间的通信开销加大,根据算法的需要,Context必须向每个不同的具体Strategy类实例传递不同的参数,因此Strategy接口就要传递所有这些不同参数的集合,导致Context会创建和传递一些永远用不到的参数;

增加了类和对象数目,因为各种算法被抽取出来单独成类,导致了对象数目增加,这种情况在算法较多时更加严重;

使用的设计原则

“开-闭”原则(OCP)

单一职责原则(SRP)

里氏替换原则(LSP)

接口隔离原则(ISP)

Practice

Practice

三Observer Pattern

Designing the Weather Station

Implementing the Weather Station

?建立接口;

?在WeatherData中实现主题接口;

?建立布告板;

?构造环境,启动气象站;

?push and pull

?Pull VS Push

?推方式:

?当状态发生变化时,一次性将所有数据推给观察者;

?不向观察者开放内部数据接口;

?只要是观察者被注册,观察者将始终收到数据;

?拉方式:

?观察者可根据需要取Subject提供的数据;

?Subject必须提供数据接口(getter);

?观察者可按自己的要求决定是否接收数据;

BULLET POINTS

1.The Observer Pattern defines a one-to-many relationship between objects.

2.Subjects, or as we also know them, Observables, update Observers using a common

interface.

3.Observers are loosely coupled in that the Observable knows nothing about them,

other than that they implement the Observer Interface.

4.You can push or pull data from the Observable when using the pattern (pull is

considered more “correct”).

5.BULLET POINTS

6.Don’t depend on a specific order of notifica tion for your Observers.

7.Java has several implementations of the Observer Pattern, including the general

purpose java.util.Observable.

8.Watch out for issues with the java.util.Observable implementation.

9.Don’t be afraid to create your own Observable implemen tation if needed.

观察者模式的由来

?将系统分割成一系列相互协作的类有也存在一些不足:

?需要维护相关对象间的一致性;

?为维持一致性而使各类紧密耦合,可能降低其可重用性;

?没有理由限定依赖于某数据对象的对象数目,对相同的数据对象可以有任意数目

的不同用户界面;

观察者模式的意图和适用性

?意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有

依赖于它的对象都得到通知并被自动更新

?适用场合

1.当一个抽象模型有两个方面, 一方面依赖于另一方面。将二者封装在独立对

象中以使它们可以独立被改变和复用;

2.一个对象的改变需要同时改变其它对象, 但不知道具体有多少对象有待改

变;

3.当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换言之, 不

希望这些对象是紧密耦合的;

观察者模式的结构

观察者模式的参与者

Subject:抽象的主题,即被观察的对象

Observer:抽象的观察者

Concrete Subject:具体被观察对象

Concrete Observer:具体的观察者

注意:在观察者模式中,Subject通过Attach和Detach方法添加或删除所关联的观察者,并通过Notify进行更新,让每个观察者观察到最新的状态;

观察者模式的效果分析

应用场景

?对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态

可变;

?对象仅需要将自己的更新通知给其他对象而不需要知道其他对象细节;

优点

?Subject和Observer之间是松偶合的,可以各自独立改变;

?Subject在发送广播通知时,无须指定具体的Observer,Observer可以自己

决定是否要订阅Subject的通知;

?高内聚、低偶合;

缺陷

?松偶合导致代码关系不明显,有时可能难以理解;

?如果一个Subject被大量Observer订阅的话,在广播通知的时候可能会有效

率问题;

四Decorator Pattern

BULLET POINTS

1.Inheritance is one form of extension, but not necessarily the best way to achieve

flexibility in our designs.

2.In our designs we should allow behavior to be extended without the need to modify

existing code.

https://www.doczj.com/doc/6811238167.html,position and delegation can often be used to add new behaviors at runtime.

4.The Decorator Pattern provides an alternative to subclassing for extending behavior.

5.The Decorator Pattern involves a set of decorator classes that are used to wrap

concrete components.

6.BULLET POINTS

7.Decorator classes mirror the type of the components they decorate. (In fact, they are

the same type as the components they decorate, either through inheritance or interface implementation.)

8.Decorators change the behavior of their components by adding new functionality

before and/or after (or even in place of) method calls to the component.

9.You can wrap a component with any number of decorators.

10.Decorators are typically transparent to the client of the component; that is, unless the

client is relying on the component’s concrete type.

装饰者模式的由来

?动态给对象添加额外职责。比如:一幅画有没有画框都可以挂在墙上,画是被装饰

者。在挂在墙上之前,画可以被蒙上玻璃,装到框子里,玻璃画框就是装饰;

?不改变接口,但加入责任。Decorator提供了一种给类增加职责的方法,不是通过继

承,而是通过组合实现的;

装饰者模式的意图和适用性

?意图:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator 模式

比生成子类更为灵活;

?适用场合

?在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责

?当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立扩展,

每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况是

因为类定义被隐藏,或类定义不能用于生成子类

装饰者模式的结构

装饰者模式的参与者

?Component

?对象接口:可以给对象动态地添加职责

?Concrete Component

?具体对象

?Decorator

?维持一个指向Component对象的指针,并定义一个与Component接口一致

的接口

?ConcreteDecorator

?向组件添加职责

?Decorator将请求转发给它的Component对象,并有可能在转发请求前后执行一些

附加的动作

装饰者模式的效果分析

?应用场景

?装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方

案,提供比继承更多的灵活性(它采用的是合成方式,比继承方式更加灵活)。

动态给一个对象增加功能,这些功能可以再动态的撤消。增加由一些基本功

能的排列组合而产生的非常大量的功能。

?提供一种修改类的行为,而避免创建众多的派生类的途径。使用装饰模式扩

展功能不会产生类爆炸。

优点

?使用Decorator模式可以很容易地向对象添加职责。可以用添加和分离的方

法,在运行时添加和删除职责;

?使用Decorator模式可以很容易地重复添加一个特性,而两次继承则极容易

出错;

?避免在层次结构高层的类有太多的特征:可以从简单的部件组合出复杂的功

能。具有低依赖性和低复杂性;

缺陷

?Decorator与Component不一样,使用装饰时不应该依赖对象标识;有许多

小对象;

设计模式试卷

设计模式期中考试试题 一:单项选择(共20道,每道2分) 1、设计模式一般用来解决什么样的问题( ) A.同一问题的不同表相B不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 2、下列属于面向对象基本原则的是( ) A.继承 B.封装 C.里氏代换D都不是 3、Open-Close原则的含义是一个软件实体( ) A.应当对扩展开放,对修改关闭. B.应当对修改开放,对扩展关闭 C.应当对继承开放,对修改关闭 D.以上都不对 4、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用()模式。 A.创建型 B.结构型C行为型D.以上都可以 5、要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编程,是( )的表述 A.开-闭原则 B.接口隔离原则 C.里氏代换原则 D.依赖倒转原则 6、设计模式的两大主题是( ) A.系统的维护与开发 B 对象组合与类的继承 C.系统架构与系统开发 D.系统复用与系统扩展 7、“不要和陌生人说话” 是( )原则的通俗表述 A.接口隔离 B.里氏代换 C.依赖倒转 D.迪米特:一个对象应对其他对象尽可能少的了解 8、构造者的的退化模式是通过合并()角色完成退化的。 A.抽象产品B产品C创建者D使用者 9、以下关于简单工厂模式叙述错误的是() A 它属于GoF23种设计模式 B 它是最简单的设计模式之一 C 它是学习其他创建型模式的基础 D 它只需要记住一个简单的参数即可获得所需对象的实例 E 它类中的方法通常为静态方法 F 它返回的类都有一个公共的父类和公共的方法 10、对象适配器模式是()原则的典型应用。 A.合成聚合复用原则 B.里式代换原则 C.依赖倒转原则 D.迪米特法则 D.以上表述全部错误。 11.对于依赖倒转的表述错误的是() A.依赖于抽象而不依赖于具体,也就是针对接口编程。 B.依赖倒转的接口并非语法意义上的接口,而是,一个类对其他对象进行调用时,所知道的方法集合。 C.从选项B的角度论述,一个对象可以有多个接口。 D.实现了同一接口的对象,可以在运行期间,顺利地进行替换。而且不必知道所示用的对象是那个实现类的实例。 E.此题没有正确答案。 12. 现有5个产品族,分布于3各不同的产品等级结构,只要指明一个产品所处的产品族以及它所在的等级结构,就可以唯一地确认这个产品。那么使用抽象工厂方法模式只需要提供

机械设计期末考试试题及答案.doc

机械设计期末考试试题及答案 一、选择题 ( 共 20 分,每小题 2 分) 1、通常,一个零件的磨损过程大致可分为三个阶段,按先后顺序,它们依次是 ( ) A. 剧烈磨损、磨合、稳定磨损 B. 稳定磨损,剧烈磨损、磨合 C. 磨合、剧烈磨损、稳定磨损 D. 磨合、稳定磨损、剧烈磨损 2、设计斜齿圆柱齿轮传动时,螺旋角β一般 在80~200范围内选取,β太小斜齿轮传动的优点不明显,太大则会引起( ) 。 A. 大的切向力 B. 大的轴向力 C. 小的切向力 D. 小的轴向力 3、若一滚动轴承的寿命为1370000 转,则该轴承所承受的当量动载荷( ) 基本额定动载荷。 A. 等于 B. 小于 C. 大于 D. 无法判断 4、在不完全液体润滑滑动轴承设计中,除了限制轴承p 值外,还要对轴承 pv 值 进行验算,其主要目的是( ) 。 A. 限制轴承过渡磨损 B. 限制轴承的温升 C. 保证轴承的强度 D. 限制 轴承的质量 5、通常,一部机器主要是由( ) 三部分构成的。 A. 原动部分,传动部分,执行部分 B. 原动部分,传动部分,控制部分 C. 辅助系统,传动部分,控制部分 D. 原动部分,控制部分,执行部分 6、一般参数的闭式硬齿面齿轮传动的主要失效形式是( ) 。 A. 齿面点蚀 B. 轮齿折断 C.齿面磨粒磨损 D.齿面胶合 7、在 V 带传动中,小轮包角一般应大于( ) 度。 A. 90 B. 100 C. 150 D. 120 8、一齿轮传动,主动轮 1 用 45 号钢调质,从动轮 2 用 45 号钢正火,则它们的齿面接触应力( ) 。 A. H 1 H 2 B. H 1 H 2 C. H1 H 2 D. 无法判断 9、蜗杆蜗轮传动的传动比,正确表达式是( ) 。 A. d2 B. i z2 C. i n2 D. i d1 i z1 n1 d2 d1 10、设计一对材料相同的软齿面齿轮传动时,一般应使大齿轮的齿面硬度 HBS2( ) 小齿轮的齿面硬度HBS1 。 A. 大于 B. 小于 C. 等于 D. 大于或等于 二、填空题 ( 共 10 分) 1、在轴的结构设计中,轴的最小直径d min是按初步确定的。 (1 分) 2、受轴向载荷的紧螺栓所受的总拉力是与之和。 (1 分) 3、在斜齿圆柱齿轮的设计计算中,考虑到实际承载区的转移,斜齿轮传动的许 用接触应力可取为[H ]1与[H]2。(1分) 1

吉林大学设计模式期末考试试题答案整理

设计模式分为三种类型,共23种。 创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。 结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)、访问者模式。 工厂模式(Factory) 意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。 适用性 ●当一个类不知道它所必须创建的对象的类的时候。 ●当一个类希望由它的子类来指定它所创建的对象的时候。 ●当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一 信息局部化的时候。 抽象工厂模式(Abstract Factory) 意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 适用性 ●一个系统要独立于它的产品的创建、组合和表示时。 ●一个系统要由多个产品系列中的一个来配置时。 ●当你要强调一系列相关的产品对象的设计以便进行联合使用时。 ●当你提供一个产品类库,而只想显示它们的接口而不是实现时。 建造者模式Builder 意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 适用性

●当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 ●当构造过程必须允许被构造的对象有不同的表示时。 原型模式Prototype 意图 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 适用性 ●当要实例化的类是在运行时刻指定时,例如,通过动态装载;或者 ●为了避免创建一个与产品类层次平行的工厂类层次时;或者 ●当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用 合适的状态手工实例化该类更方便一些。 单例模式Singleton 意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 适用性 ●当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。 ●当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例 时。 适配器模式Adapter 意图 将一个类的接口转换成另外一个客户希望的接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适用性 ●你想使用一个已经存在的类,而它的接口不符合你的需求。 ●你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼 容的类)协同工作。 ●(仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配 它们的接口。对象适配器可以适配它的父类接口。

设计模式复习提纲

设计模式复习提纲 第一章 1.状态图的定义 状态图用来描述一个特定对象的所有可能状态及其引起状态转移的事件。 第二章 1.软件的可维护性和可复用性(?) 软件可维护性,即维护人员对该软件进行维护的难易程度,具体包括理解、改正、改动和改进该软件的难易程度。 可复用性:复用又叫重用,是重复使用的意思。 2.面向对象设计原则 (1)单一职责原则 (2)开闭原则 (3)里氏代换原则 (4)依赖倒转原则 (5)接口隔离原则 (6)合成复用原则 (7)迪米特法则 3.单一职责原则定义 单一职责原则定义:一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。 另一种定义:就一个类而言,应该仅有一个引起它变化的原因。 4.开闭原则定义 开闭原则定义:一个软件实体应当对扩展开放,对修改关闭。 5.里氏代换原则定义 里氏代换原则有两种定义方式。 第一种定义方式相对严格,其定义如下: 如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P 在所有的对象o1都代换成o2时,程序P的行为没有变化,那么类型S是类型T的子类型。第二种更容易理解的定义方式如下: 所有引用基类(父类)的地方必须能透明地使用其子类的对象。 6.依赖倒转原则定义 依赖倒转原则定义:高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。 另一种表述为:要针对接口编程,不要针对实现编程。 7.接口隔离原则定义 接口隔离原则定义:客户端不应该依赖那些它不需要的接口。注意:在该定义中的接口指的是所定义的方法。

另一种定义方法:一旦一个接口太大,则需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可。 8.合成复用原则定义 合成复用原则,又称为组合/聚合复用原则,其定义如下:尽量使用对象组合,而不是继承来达到复用的目的。 9.迪米特法则定义 迪米特法则,又称为最少知识原则,它有多种定义方法,其中几种典型定义如下: (1)不要和“陌生人”说话。 (2)只与你的直接朋友通信。 (3)每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。 第三章 1.模式的定义 每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,我们可以无数次地重用那些已有的解决方案,无需再重复相同的工作。可以用一句话简单表示为:模式是在特定环境中解决问题的一种方案。 2.设计模式的定义 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 3.设计模式的基本要素 设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式,其中的关键元素包括以下四个方面:模式名称、问题、解决方案、效果。 4.设计模式的分类 (1)根据其目的(模式是用来做什么的)可分为创建型、结构型和行为型三种: ①创建型模式主要用于创建对象。 ②结构型模式主要用于处理类或对象的组合。 ③行为型模式主要用于描述对类或对象怎样交互和怎样分配职责。 (2)根据范围,即模式主要是用于处理类之间关系还是处理对象之间的关系,可分为类模式和对象模式两种: ①类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,是属于静态的。 ②对象模式处理对象间的关系,这些关系在运行时刻变化,更具动态性。 5.GoF设计模式简介 GoF 最先将模式的概念引入软件工程领域,他们归纳发表了23种在软件开发中使用频率较高的设计模式,旨在用模式来统一沟通面向对象方法在分析、设计和实现间的鸿沟。

软件设计模式试题集 含答案

设计模式试题 一.选择 1. 设计模式具有的优点()。 A.适应需求变化 B.程序易于理解 C.减少开发过程中的代码开发工作量 D.简化软件系统的设计 2. 设计模式一般用来解决什么样的问题( )。 A.同一问题的不同表相 B 不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 3. 设计模式的两大主题是( )。 A.系统的维护与开发 B.对象组合与类的继承 C.系统架构与系统开发 D.系统复用与系统扩展 4. 以下哪些问题通过应用设计模式不能够解决。() A)指定对象的接口B)针对接口编程 C)确定软件的功能都正确实现D)设计应支持变化 二.填空 1. 模式的基本要素包括名称、意图、问题、解决方案、参与者和协作者、(效果)、实现、GoF 参考。 2. 设计模式基本原则包括:开闭原则,(从场景进行设计的原则),包容变化原则。 3. 设计模式是一个(抽象)的方案,它可以解决一类问题。 4. 1. 在设计模式群体中,效果是指(原因和结果)。三. 判断 1. 适配器模式属于创建型模式。错 2. 在设计模式中,“效果”只是指“原因和结果”。对 3. 设计模式使代码编制不能真正工程化。错 4. 设计模式的两大主题是系统复用与系统扩展。对四. 名词解释 1. 设计模式 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 2. 模板 模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 3. 模式 就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,那就是模式。 4. 内聚度 模块内部各成分彼此结合的紧密程度。五.简答 题 1. 什么是设计模式?设计模式的目标是什么?设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码 设计经验的总结。使用设计模式是为了可 重用代码、让代码更容易被他人理解、保证代码可靠性。 2. 设计模式的基本要素有哪些? 名称,意图,问题,解决方案,参与者和协作者,效果,实现,GOF 参考。 3. 设计模式中一般都遵循的原则有什么? 开-闭原则,根据场景进行设计原则,优先组合原则,包容变化原则。 4. 四人团针对“创建优秀面向对象设计”建议了哪些策略? 针对接口编程,优先使用对象组合而不是类继承,找到并封装变化点。 第6 章 facade(外观)模式 一.选择 1. 外观模式的作用是()。A.当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些 额外的功能。B.为了系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更 加容易使用。

机械设计四套期末考试试题及参考答案

精心整理《机械设计》课程试题(一) 一、填空题(每空1分共31分) 1、当一零件受脉动循环变应力时,则其平均应力是其最大应力的(?????)。 2、三角形螺纹的牙型角α=(???),适用于(???),而梯形螺纹的牙型角α=(?????),适用 于(?????)。 3、螺纹连接防松,按其防松原理可分为(????)防松、(????)防松和(????)防松。 4、(?????)。 5 6 7 力( ??? 8、(η= ( ??效率。 9 10 1、循环特性r=-1的变应力是(?????)应力。 A.对称循环变???B、脉动循环变?C.非对称循环变???D.静 2、在受轴向变载荷作用的紧螺柱连接中,为提高螺栓的疲劳强度,可采取的措施是(???)。 A、增大螺栓刚度Cb,减小被连接件刚度Cm?B.减小Cb.增大CmC.增大Cb和Cm???D.减小Cb 和Cm 3、在螺栓连接设计中,若被连接件为铸件,则往往在螺栓孔处做沉头座孔.其目的是(???)。

???A .避免螺栓受附加弯曲应力作用?????B .便于安装????C .为安置防松装置 4、选取V 带型号,主要取决于(?????)。 ???A .带的线速度???B .带的紧边拉力 ???C .带的有效拉力???D .带传递的功率和小带轮转速 5、对于标准齿轮传动,影响齿形系数Y 的主要几何参数是(?????)。 A .齿轮的模数??? B .齿轮的压力角?? C .齿轮的齿数??? D .齿轮的顶隙系数 6 b 1=80,b 2=???A .7(????????A 8A 9????A 10A 、F 0=1000N 总拉力F 2=?剩余预紧力F 1=?在预紧力F 0不变的条件下,若保证被连接件间不出现缝隙,该螺栓的最大轴向工作载荷F max 为多少??? 2、(13分)如图3-2所示的手摇起重绞车采用蜗杆传动。巳知模数m =8mm ,蜗杆头数z 1=1,蜗杆分度圆直径d 1=80mm ,蜗轮齿数z 2=40,卷筒直径D =200mm ,蜗杆与蜗轮间的当量摩擦系数f V =0.03,轴承和卷简中的摩擦损失等于6%,问: ???(1)欲使重物W 上升1m,手柄应转多少转?并在图上标出手柄的转动方向。 ???(2)若重物W = 5000N ,手摇手柄时施加的力F =

设计模式考试复习题

一、1. 设计模式一般用来解决什么样的问题: A.同一问题的不同表相 2. 下列属于面向对象基本原则的是: C.里氏代换 3. Open-Close原则的含义是一个软件实体:A.应当对扩展开放,对修改关闭. 4. 当我们想创建一个具体的对象而又不希望指定具体的类时,使用(A)模式。A.创建型 5. 要依赖于抽象不要依赖于具体。即针对接口编程不要针对实现编程:(D)依赖倒转原则 6. 依据设计模式思想,程序开发中应优先使用的是( A )关系实现复用。A, 委派 7. 设计模式的两大主题是( D ) D.系统复用与系统扩展 8. 单体模式中,两个基本要点(AB)和单体类自己提供单例A .构造函数私有 B.唯一实例 9. 下列模式中,属于行为模式的是( B ) B观察者 10. “不要和陌生人说话”是( D )原则的通俗表述 D.迪米特 1. 软件体系结构是指一个系统的有目的的设计和规划,这个设计规划既不描述活动,也不描述系统怎样开发,它只描述系统的组成元素及其相互的交互协作。 2.一个UML模型只描述了一个系统要做什么,它并没告诉我们系统是怎么做。 3.接口是可以在整个模型中反复使用的一组行为,是一个没有属性而只有方法的类。 4.多重性指的是,某个类有多个对象可以和另一个类的一对象关联。 5.当一个类的对象可以充当多种角色时,自身关联就可能发生。 6.在泛化关系中,子类可以替代父类。后前者出现的可以相同地方。反过来却不成立。 7.最通常的依赖关系是一个类操作的形构中用到了另一个类的定义。 8.组成是强类型的聚集,因为聚集中的每个部分体只能属于一个整体。 9.实现的符号和继承的符号有相似之处,两者的唯一差别是实现关系用虚线表示,继承关系用实线表示。 10. 设计模式中应优先使用对象组合而不是类继承。 1.适配器模式属于创建型模式结构型( F ) 2.在设计模式中,“效果”只是指“原因和结果”( T ) 3.设计模式使代码编制不能真正工程化( T ) 4.面向对象语言编程中的异常处理,可以理解为责任链模式(T ) 5.反模式就是反对在软件开发过程中使用设计模式分析:反模式用来解决问题的带有共性的不良方法(F ) 1.什么是设计模式?设计模式目标是什么? 答:设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解,保证代码可靠性。 2.设计模式中一般都遵循的原则有什么? 答:开闭原则、根据场景进行设计原则、优先组合原则、包容变化原则 3.“Gang of Four”针对“创建优秀面向对象设计”建议了哪些策略? 答:针对接口编程、优先使用对象组合而不是类继承,找到并封装变化点。 4.面向对象系统中功能复用的两种最常用技术是什么? 答:类继承和对象组合,类继承允许你根据其他类的实现来定义一个类的实现。父类的内部细节对子类可见。 类继承是在编译时刻静态定义的,且可直接使用,类继承可以较方便地改变被复用的实现。对象组合是类继承之外的另一种复用选择。新的更复杂的功能可以通过组装或组合对象来获得。对象组合要求被组合的对象具有良好定义的接口。 5.只根据抽象类中定义的接口来操纵对象有什么好处? 答:1) 客户无须知道他们使用对象的特定类型,只须对象有客户所期望的接口。 2) 客户无须知道他们使用的对象是用什么类来实现的,他们只须知道定义接口的抽象类。 五、应用题(分值15) 公司架构:经理、工程师、技师和后勤人员都是公司的雇员,经理管理工程师、技师和后勤人员。高层经理领导较低级别的经理。典型层次图如下:可以使用哪种设计模式实现公司的层级关系?并说明为什么? 组合模式,第一,其公司关系架构为树形结构;第二,其表示了部分-整体关系(自己扩展)

设计模式课后习题

建造者模式 课后第一题: 产品类: public class GamePerson { private String face; private String gender; private String cloth; public String getFace() { return face; } public void setFace(String face) { this.face = face; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getCloth() { return cloth; } public void setCloth(String cloth) { this.cloth = cloth; } } 抽象建造类: public abstract class PersonCreate { protected GamePerson person=new GamePerson(); public abstract void createFace(); public abstract void createGender(); public abstract void createCloth(); public GamePerson getPerson(){ return person; } }

具体建造者类: public class PersonType1 extends PersonCreate { public void createFace() { person.setFace("瓜子脸"); } public void createGender() { person.setGender("美女"); } public void createCloth() { person.setCloth("洛丽塔"); } } 具体建造类: public class PersonType2 extends PersonCreate { public void createFace() { person.setFace("国字脸"); } public void createGender() { person.setGender("帅哥"); } public void createCloth() { person.setCloth("西装革履"); } } 指挥者类: public class GamePlayer { private PersonCreate pc; public void choseType(PersonCreate pc){ this.pc=pc; } public GamePerson create(){ pc.createCloth(); pc.createFace(); pc.createGender(); return pc.getPerson(); } } 测试类: public class Test { public static void main(String[] args) { PersonCreate pc=new PersonType1();

《机械设计基础》期末考试试卷

北京机械工业学院机械设计考题与答案 一、是非题(有5小题,每题1分,共5分。正确在括号内写“T”,错误在括号内写“F”) 1.双螺母防松结构中,如两螺母厚度不同,应先安装薄螺母,后安装厚螺母。(T ) 2.滚动轴承的轴向系数Y值越大,其承受轴向能力越大。( F ) 3.减速器的齿轮和滚动轴承可以采用不同的润滑剂。(T ) 4.设计蜗杆传动时,为了提高传动效率,可以增加蜗杆的头数。( T ) 5.失效就是零件断裂了。(F ) 二、选择题(有5小题,每题2分,共10分。在每小题的选项中,只有一项是符合题目要求的,把所选项的字母填在题中的横线上) 6.温度对润滑油粘度的影响是随着温度的升高润滑油的粘度 C 。 A)提高 B)不变 C)降低 7.设计时键的截面尺寸通常是根据 D 从标准中选取。 A)键传递的转矩 B)轴的转速 C)轮毂的长度 D)轴的直径 8.下列四种叙述中 D 是正确的。 A)变应力只能由变载荷产生 B)静载荷不能产生变应力 C)变应力是由静载荷产生 D)变应力是由变载荷产生,也可能由静载荷产生 9.从经济观点考虑,单件生产的齿轮减速箱的箱体最好采用 C 。 A)灰铸铁铸造 B)铸钢铸造 C)钢板焊接 10.由下列不同材料制造的零件,其形状、尺寸、结构、表面加工情况和工作条件等完全相同,其中有效应力集中系数最大的是 B 。 A)HT200灰铸铁 B)40CrNi钢 C)45钢 三、填空题(有5小题,20个空,每空1分,共20分。把答案填在题中横线上) 11.对下列各种零件至少举出一种常用材料的牌号,齿轮 45, 40Cr ,滑动轴承轴瓦 ZQSn10-1,ZQAl9-4 ,蜗轮轮缘 ZQSn10-1, ZQAl9-4 ,螺钉 Q235,20 ,弹簧 65Mn,碳素弹簧钢丝,弹簧垫圈 65Mn ,滚动轴承套圈 GCr15 ,滚动轴承保持架 08F ,键 45 。 12.带传动的失效形式为打滑和疲劳破坏。因此,其主要设计依据为在保证带传动不打滑的条件下,具有一定的疲劳强度和寿命。 13.轴按承载分为心轴,转轴和传动轴。 14.螺纹联接按防松原理可分为摩擦防松,机械防松和其它防松。 15.灰铸铁齿轮常用于开式传动中,这种齿轮的主要失效形式是磨损。 四、问答题(有5小题,每题4分,共20分) 16.什么是等强度设计?在设计中如何应用? 答:一个机器的各零件或一个零件对于各种失效方式具有同样的承载能力。 在设计中的应用有二:一是使各部分等强度,避免某些部分强度过大,浪费材料;二是故意设置薄弱环节,过载时失效,使其它部分在过载时不致于损坏而得到保护。 17.什么是机械零件的失效? 答:机械零件由于某种原因不能正常工作,叫失效。 18.滑动轴承计算中,计算p,pv,v各考虑什么问题? 答:p——轴承磨损; pv——发热; v——局部磨损。 机械设计试卷 一、单项选择题 1、普通平键的截面尺寸是根据按标准选择的。【 C 】 A.传递转矩的大小 B. 轮毂的长度 C. 轴的直径 2、V带传动设计中,限制小带轮的最小直径主要是为了。【 A 】 A.限制弯曲应力 B. 使结构紧凑 C.限制带轮包角 3、为了制造、测量方便,取三角带的作为它的公称长度。【 B 】 A.内周长 B. 节线长 C. 外周长 4、角接触球轴承和圆锥磙子轴承的轴向承载能力随接触角的增大而。 【 A 】 A.增大 B. 减少 C. 不便 5、链传动中,链条的节数最好为,而链轮齿数为。【 B 】 A.奇数,偶数 B.偶数,奇数 C. 5的倍数,偶数 6、按纯扭矩设计计算的轴径,一般作为轴的直径。【 A 】 A.最细端 B. 最大 C. 平均

最新面向对象的分析与设计期末考试试卷(F卷)

面向对象的分析与设计期末考试试卷(F卷)一、选择题(30分) 说明:每题2分,只有1个正确答案,请将正确答案填写在下面表格中。 1. 一个设计得好的面向对象系统具有()特征。 A 低内聚、低耦合 B 高内聚、低耦合 C 高内聚、高耦合 D 低内聚、高耦合2.构成对象的两个主要因素是()。 A 属性和服务 B 标识和内容 C 继承和多态 D 消息和封装 3. 下面描述中()不是使用软件模型的目的。 A 可以更好地理解问题 B 可以更早地发现错误或疏漏的地方 C 可以为最后代码的生成提供依据 D 在开发过程中使用面向对象方法 4. 下列事物中一般不是目标系统的外部参与者的是()。 A 人 B 外部设备 C 外部系统 D 数据存储 5. 下面()可以描述一个用例中多个对象之间的相互协作关系以及协作过程的行为次序。 A 交互图 B 状态图 C 对象图 D 用例图 6. 统一过程(或称RUP)所提出的迭代开发过程是()。 A 一种结构化开发方法,该方法给出了功能分解有具体步骤 B 一种管理软件开发的过程复杂性和对变更进行规划的技术 C 一种自顶向下的开发过程,且开发过程没有使用数据流图 D 是RUP中最重要的特点 7. 下列描述中正确的是()。 A 消息可以由被动对象发送到主动对象 B 状态图中,动作可以被中断而活动不能被中断 C 构件图中,一个构件和一个接口之间只能存在实现关系 D 状态图不适合于描述跨多个用例的单个对象的行为,而适合描述多个对象之间的行为协作 8. 根据下面的代码,可以确定类A与类B之间存在()关系。 public class A { private B theB; public void aMethod(){ theB.doSomthing(); } } A 关联 B 泛化 C 实现 D 包含 9. 面向对象的特点主要概括为()。 A 可分解性、可组合性、可分类性 B 继承性、封装性、多态性 C 抽象性、继承性、封装性、多态性 D 封装性、易维护性、可扩展性、可重用性

设计模式总复习题

总复习题 复习参考资料: 1.GoF 设计模式 2.设计模式解析 3.易学设计模式 4.大话设计模式 5.深入浅出设计模式 以参考资料为主,模拟试题1-5中有些题答案在一些附加资料中 模拟试题1 一、选择题(分值20) 1. 设计模式一般用来解决什么样的问题( ) A.同一问题的不同表相 B不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 2. 下列属于面向对象基本原则的是( ) A.继承 B.封装 C.里氏代换 D都不是 3. Open-Close原则的含义是一个软件实体( ) A.应当对扩展开放,对修改关闭. B.应当对修改开放,对扩展关闭 C.应当对继承开放,对修改关闭 D.以上都不对 4. 当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用()模式。 A.创建型 B.结构型 C行为型 D.以上都可以 5. 要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编程,是( )的表述 A. 开-闭原则 B. 接口隔离原则 C. 里氏代换原则 D. 依赖倒转原则 6. 依据设计模式思想,程序开发中应优先使用的是( )关系实现复用。 A, 委派 B.继承 C创建 D.以上都不对 7. 设计模式的两大主题是( ) A.系统的维护与开发 B 对象组合与类的继承 C.系统架构与系统开发 D.系统复用与系统扩展 8. 单体模式中,两个基本要点( )和单体类自己提供单例 A .构造函数私有 B.唯一实例 C.静态工厂方法 D.以上都不对 9. 下列模式中,属于行为模式的是( ) A.工厂模式 B观察者 C适配器以上都是 10. “不要和陌生人说话”是( )原则的通俗表述

软件设计模式试题集58887

第5章设计模式 一.选择 1. 设计模式具有的优点()。 A.适应需求变化 B.程序易于理解 C.减少开发过程中的代码开发工作量 D.简化软件系统的设计 2. 设计模式一般用来解决什么样的问题( )。 A.同一问题的不同表相B不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 3. 设计模式的两大主题是( )。 A.系统的维护与开发 B 对象组合与类的继承 C.系统架构与系统开发 D.系统复用与系统扩展 4. 以下哪些问题通过应用设计模式不能够解决。() A)指定对象的接口B)针对接口编程 C)确定软件的功能都正确实现D)设计应支持变化 解答: 1. A 2. A 3. D 4. C 二.填空 1. 模式的基本要素包括名称、意图、问题、解决方案、参与者和协作者、()、实现、G oF参考。 2. 设计模式基本原则包括:开闭原则,(),包容变化原则。 3. 设计模式是一个( )的方案,它可以解决一类问题。 4. 1. 在设计模式群体中,效果是指()。 解答: 1. 效果 2. 从场景进行设计的原则

3. 抽象 4. 原因和结果 三.判断 1. 适配器模式属于创建型模式。 2. 在设计模式中,“效果”只是指“原因和结果”。 3. 设计模式使代码编制不能真正工程化。 4. 设计模式的两大主题是系统复用与系统扩展。 解答: 1. 错 2. 对 3. 错 4. 对 四.名词解释 1. 设计模式 2. 模板 3. 模式 4. 内聚度 解答: 1. 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性 2. 模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 3. 就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,那就是模式。 4. 五.简答题 1. 什么是设计模式?设计模式的目标是什么?

《机械设计基础》期末考试题汇总(最新整理)

2、极位夹角是曲柄摇杆机构中夹角。(×)改:曲柄 5、凸轮轮廓的形状取决于从动件的运动规律。(×)改:决定 7、楔键的两侧面是工作面。(×)改:上下两表面 8、普通车床变速箱内齿轮的润滑方式时油雾润滑。(×) 9、滚动轴承的基本额定动载荷C 值越大,则轴承的承载能力越高。(√) 三、选择题(每题2 分,共20 分) 2、为了使相啮合的一对齿轮其强度和寿命接近,通常( B )。 A、齿轮的硬度大于小齿轮的硬度 B、小齿轮的硬度大于大齿轮的硬度 C、大、小齿轮的硬度相同 3、下列哪一种普通平键用于轴端。( C )。P159 A、A 型 B、B 型 C、C 型 4、渐开线在基圆上的压力角为多大?(A ) A、0° B、20° C、90° 5、下列螺纹用于传动的是( A )。 A、梯形螺纹 B、管螺纹 C、普通螺纹 7、在螺栓联接中,当有一个被联接件较厚,而且需要经常拆卸时,宜选用的联接类型是( A )联接。 A、双头螺柱 B、紧定螺栓 C、普通螺栓 8、用来传递双向转矩的一对切向键,在轴上相隔多少度为宜? (C ) A、90°~120° B、135°~150° C、120°~130° 试题一 2.曲柄摇杆机构中,摇杆为主动件时,曲柄与连杆共线时为死点位置。

(A)不存在(B)曲柄与连杆共线时为(C)摇杆与连杆共线时为 3.为保证四杆机构良好的机械性能,传动角不应小于最小许用值。 (A)压力角(B)传动角(C)极位夹角 4.凸轮轮廓曲线决定了从动杆的运动规律。 (A)凸轮转速(B)凸轮轮廓曲线(C)凸轮形状 5.凸轮机构中,凸轮基圆半径愈大,压力角愈_小,机构传动性能愈好。 6.紧键联接与松键连联接的主要区别在于:前者安装后,键与键槽之间就存在有摩擦力。(A) 压紧力(B) 轴向力(C) 摩擦力 7.链“B18X80”的含义是 B 型键宽度b=18mm,长度L=80mm 。 8.螺纹联接是指利用螺纹零件把需要固定在一起的零件固连起来。 螺旋传动是指利用螺纹零件实现回转运动转换成直线运动。 9.螺纹的公称直径是指它的外径,螺纹“M12X1.5”的含义为_细牙螺纹外径12mm,螺距1.5 。 10.采用螺纹联接时,若被联接件总厚度较大,切材料较软,在需要经常装卸的情况下,宜采用双头螺栓联接_。用于薄壁零件联接的螺纹,宜采用三角形细牙螺纹。 (A)螺栓联接(B) 双头螺栓联接(C) 螺钉联接(D) 三角形细牙螺纹 (E) 三角形粗牙螺纹(F) 矩形螺纹 11.某调整螺纹,采用双头粗牙螺纹,螺距为3mm,为使螺母相对螺杆沿轴向移动12mm,则螺杆应转 2 圈。 12.国标规定,三角带有_ Y Z A B C D E 七种类型,代号‘B2240’表示_B 型基准长度2240mm 。

吉林大学2014级软件设计模式期末试题(A卷)-软件

2016-2017学年第1学期 2014级《软件设计模式》考试试题A(开卷) 考试时间:2016年11月班级学号姓名 ?本试卷满分100分; ?请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰; ?试题中使用C++语言作为描述语言,答题时可以使用C++或Java或C#程序设计语言中 的任意一种作为描述语言,但整个卷面只能使用其中一种,不得混合使用; ?请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和草纸 一并交上来。 一、单选题(共20分,每题2分) 1.下列选项中属于设计模式主要优点的是: (A)程序易于理解(B)减少程序最终代码量 (C)适应需求变化(D)简化软件系统的设计 2.Open-Close原则的含义是一个软件实体: (A)应当对扩展开放,对修改关闭(B)应当对修改开放,对扩展关闭 (C)应当对继承开放,对修改关闭(D)以上都不对 3.下列选项中属于面向对象设计原则的是: (A)抽象(B)封装(C)里氏替换(D)多态性4.设计模式的关键要素不包括: (A)名称(B)问题(C)解决方案(D)实现 5.下列选项中不属于创建型模式的是: (A)抽象工厂模式(B)外观模式(C)工厂方法模式(D)单件(单例)模式6.用于分离接口和具体实现,使得接口和实现可独立变化的是: (A)适配器模式(B)桥接模式(C)命令模式(D)模板方法模式7.体现“集中管理多个对象间的交互过程和顺序”的是: (A)状态模式(B)门面模式(C)策略模式(D)中介者模式8.限制类的实例对象只能有一个的是: (A)观察者模式(B)工厂方法模式(C)单件(单例)模式(D)生成器模式9.描述对象所能接受的全部请求的集合的是: (A)型构(B)接口(C)类型(D)超类型10.用于为一个对象添加更多功能而不使用子类的是: (A)桥接模式(B)适配器模式(C)代理模式(D)装饰器模式

机械设计期末考试试题及答案

机械设计期末考试试题及答案 一、选择题(共20分,每小题2分) 1、 通常,一个零件的磨损过程大致可分为三个阶段,按先后顺序,它们依次是 () A.剧烈磨损、磨合、稳定磨损 B.稳定磨损,剧烈磨损、磨合 C.磨合、剧烈磨损、稳定磨损 D.磨合、稳定磨损、剧烈磨损 2、 设计斜齿圆柱齿轮传动时,螺旋角B —般在8°?20°范围内选取,B 太小斜齿 轮 传动的优点不明显,太大则会引起()。 A.大的切向力 B.大的轴向力 C.小的切向力 D.小的轴向力 3、 若一滚动轴承的寿命为 1370000转,则该轴承所承受的当量动载荷() 基本额定动载荷。 A. 等于 B. 小于 C.大于 D. 无法判断 4、 在不完全液体润滑滑动轴承设计中, 除了限制轴承p 值外,还要对轴承pv 值 进行验算,其主要目的是()。 A. 限制轴承过渡磨损 B.限制轴承的温升 C.保证轴承的强度 D.限制 轴承的质量 5、 通常,一部机器主要是由()三部分构成的。 A.原动部分,传动部分,执行部分 B.原动部分,传动部分,控制部分 C.辅助系统,传动部分,控制部分 D.原动部分,控制部分,执行部分 6、 一般参数的闭式硬齿面齿轮传动的主要失效形式是 ()。 A.齿面点蚀 B.轮齿折断 C.齿面磨粒磨损 D.齿面胶合 7、 在V 带传动中,小轮包角一般应大于()度。 &一齿轮传动,主动轮1用45号钢调质,从动轮2用45号钢正火,贝尼们的 齿面接触应力()。 9、蜗杆蜗轮传动的传动比,正确表达式是() 10、设计一对材料相同的软齿面齿轮传动时,一般应使大齿轮的齿面硬度 HB3() 小齿轮的齿面硬度HBS 。 A.大于 B. 小于 C. 等于 D. 大于或等于 二、填空题(共10分) 1、 在轴的结构设计中,轴的最小直径 d min 是按 ________ 初步确定的。(1分) 2、 受轴向载荷的紧螺栓所受的总拉力是 ______ 与 _____________ 之和。(1分) 3、 在斜齿圆柱齿轮的设计计算中,考虑到实际承载区的转移,斜齿轮传动的许 用接触应力可取为[H ]1与[H ]2 ___________________ 。(1分) A. 90 B. 100 C. 150 D. 120 A. B. C. D. 无法判断 A. d 1 B. i 亞C. i Z 1 D. d 2

C#设计模式期末卷

━ ━ ━ ━ ━ ━ ━ ━ ━ 装 ━ ━ ━ ━ ━ ━ ━ 订 ━ ━ ━ ━ ━ ━ ━ 线 ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ ━ 防灾科技学院 2013 ~ 2014 学年 第一学期期末考试 UML 与设计模式 试卷 (A) 答案及评分细则 使用班级1050421/422/423/424、1050411/412 答题时间:120分钟 注意事项: 1、 考试形式闭卷 一、单选题(本大题共5小题,每题 2分,共 10 分,请将答案填写在该题后指定位置) 1、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用( )模式。 A 创建型 B 结构型 C 行为型 D 以上都可以 2、下面( )图元哪个一个表示关联关系。 A B C D 3、下列模式中,属于行为模式的是( ) A.工厂模式 B 观察者模式 C 桥接器模式 D 以上都是 4、( )将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化。 A 代理模式 B 适配器模式 C 原型模式 D 命令模式 5、C++中将一个对象赋值给另外一个创建的对象,如下面的代码(注A 代表一个类): A a; A b=a; 一定会使用到A 类中什么函数是 ( )。 A. 析构函数 B 拷贝构造函数 C. 赋值函数 D. 友元函数 答案填写处: 1 A ; 2 B ; 3 B ; 4 D ; 5 B 。 二、填空题(本大题10个空,每空2分,共20分,请将答案填写在该题后指定位置) 1、所谓开闭原则具体是指 设计对扩展开放 、____对修改关闭_________。 2的问题。 3、工厂模式分为 简单工厂 、 工厂方法 、 抽象工厂 三种类型。 4、程序设计中追求的两个最基本的原则是 高内聚 、______低耦合_______。 5、C# 编程使用 namespace 关键字表示命名空间,C++中通过 extern 关键字使用其他文件中定义的全局变量。 答案填写处: 1 设计对扩展开放、 _对修改关闭 ; 3 简单工厂、工厂方法、抽象工厂 ;4 高内聚、低耦合 ;5 namespace 、extern

JAVA设计模式期末考试复习资料

《JAVA设计模式》复习资料 一、单项选择题 1.设计模式起源于() A、机械设计 B、建筑工程设计 D、工业电力化设计C、水利工程设计 2.“不要和陌生人说话”是()原则的通俗表述。 B、里氏替换、接口隔离 C、依赖倒置 D、迪米特A3.目前常见的设计模式主要有()种。、28、B23 A、、21 C32 D4.以下关于单一职责原则的叙述不正确的是()。 A、单一职责原则的英文名称是Single Responsibility Principle. B、单一职责原则要求一个类只有一个职责 C、单一职责原则有利于对象的稳定,降低类的复杂性 D、单一职责原则提高了类之间的耦合性 5.以下关于依赖倒置原则的叙述不正确的是() A、依赖倒置原则的简称是DIP B、高层模块不依赖于低层模块,低层模块依赖于高层模块 C、依赖倒置原则中高层模块和低层模块都依赖于抽象 D、依赖倒置原则实现模块间的松耦合 6.下面关于单例模式说法错误的是() A、单例模式是指一个类只有一个实例 B、单例类从实现方式上分为懒汉式和饿汉式 C、单例类从功能上分为状态单例类和无状态单例类 D、可以通过继承的方式对单例类进行扩展得到功能更丰富的单例类 7.下面关于工厂方法模式说法错误的是()。 A、工厂方法模式使一个类是实例化延迟到其子类中 B、工厂方法模式中具有抽象工厂、具体工厂、抽象产品和具体产品4个角色 C、工厂方法模式可以处理多个产品的多个等级结构 D、工厂方法模式可以屏蔽产品类 8.在以下情况不适合使用责任职责链模式() A、有多个对象可以处理请求,哪个对象处理该请求在运行时刻自动确定。 B、在需要用比较通用和复杂的对象指针代替简单的指针的时候。 C、你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。 D、一个请求需要一系列的处理工作。 9.当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用()模式 A、结构型 B、创建型 C、行为型 D、以上都可以 10.以下用来描述适配器模式的是() A、表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 、定义一个用于创建对象的接口,让子类决定实例化哪一个类。B. C、将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 D、动态地给一个对象增加一些额外的职责。

相关主题
文本预览
相关文档 最新文档