JAVA设计模式::马鞍山大学期末考试知识点总结

软件构架题目类型
选择20 10X2’
判断10 10X1’
简答30 6X5’
设计40 10’+15’+15’

简答重点(一共6题,共30分)

1、什么是设计模式,及其目标?应遵守哪些原则?

什么是设计模式:
设计模式是从许多优秀的软件系统中总结出成功的可复用的设计方案
目标:
软件设计目标:正确性、健壮性、灵活性、可重用性、高效性
良好设计的特征:可扩展性、灵活性、可插入性
面向对象的三大特征:继承性、封装性、多态性

原则:
依赖倒置原则(DIP)
里氏替换原则(LSP)
接口分离原则(ISP)
单一职责原则(SRP)
开闭原则(OCP)

2、中介者模式的定义是什么?包括定义,使用场景,角色说明

定义:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
使用场景:许多对象以复杂的方式交互,所导致的依赖关系使系统难以理解和维护。一个对象引用其他很多对象,导致难以复用该对象。
角色说明:
中介者:中介者是一个接口,该接口定义了用于同事(Colleague)对象之间进行通信的方法
具体中介者(ConcreteMediator):实现了中介者接口的类。具体中介者需要包含所有具体同事的引用,并通过实现中介者接口的方法来满足具体同事之间的通信请求。
同事:一个接口,规定了具体同事所需要实现的方法。
具体同事:实现同事接口的类。具体同事需要包含具体中介者的引用,一个具体同事需要和其他具体中介者交互时,只需要将自己的通信亲求发送给它所包含的具体中介者即可。

3、代理模式的定义是什么?

为其他对象提供一种代理以控制对这个对象的访问

4、享元模式的定义是什么?

运用共享模式有效地支持大量细粒度的对象。

5、状态模式的定义是什么?

在一个对象在其内部状态改变时改变它的行为,对象看起来似乎是修改了它的类。

6、常用的设计模式有哪些?请列举十种以上。

责任链模式
观察者模式
享元模式
代理模式
状态模式
单件模式
中介者模式
备忘录模式
装饰模式

7、谈谈你对设计模式的认识。

设计模式是对软件设计实战经验、技巧的总结,最终设计目标是让软件的具有更高的性能、价值。具体来说,设计目标主要有可用性、可维护性、灵活性、可插入性。设计模式还来源于一些软件工程理论的总结,遵循一定的设计原则,比较有经典的“面向对象的设计原则”,它提出世界的一切事物都是由各种对象组成的,对象有几个基本特点:抽象、封装、继承、多态。在软件开发中运用体现在,”封装“保持和促进系统的可维护性;“继承”使得概念和定义可以复用;“多态”使得实现和应用可以复用。
面向对象的设计原则包括封装变化,接口隔离原则,合成复用原则 ,开闭原则,依赖倒转原则,迪米特原则,好莱坞原则,单一职责原则,里氏代换原则。
这些原则方法指导我们在在理解和使用设计模式时,不能因使用设计模式而使用它,也应当记住上述设计原则、设计目标,来恰当的选用设计模式,有时可以不用设计模式,具体情况要具体分析,盲目乱用设计模式,可能会违背软件设计的原则、目标,适得其反。

8、观察者模式的定义是什么?

定 义对象间的一种多对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都得到通知并被自动更新。

9、适配器模式的定义是什么?包括定义,使用场景,角色说明。

定义:将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
使用场景:一个程序想要使用已经存在的类,但是该类所实现的接口和当前程序所使用的接口并不一致。
角色说明
目标:目标是一个接口,该接口是用户想使用的接口
被适配者:被适配者是一个已经存在的接口或抽象类,这个接口或抽象类需要适配
适配器:适配器是一个类,该类实现了目标接口并包含有被适配者的引用,即适配器的职责是对被适配者接口与目标接口进行适配。

10、工厂模式的定义是什么?

定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。

11、抽象工厂模式的定义是什么?

提供一个创建一系列或相互依赖对象的接口,而无需指定它们具体的类。

12、建造者模式的定义是什么?包括定义,使用场景,角色说明。

定义:将一个复杂对象的构造与它的表示相分离,使得同样的构建过程可以创建不同的表示。
使用场景:需要生成的产品对象有复杂的内部结构,这些产品对象具备共性;
隔离复杂对象的创建和使用,并使得相同的创建过程可以创建不同的产品。
角色说明
Product 产品:通常是实现了模板方法模式,也就是有模板方法和基本方法,
Builder :抽象建造者,规范产品的重组,一般由子类完成
ConcreteBuilder:具体建造者,实现抽象类定义的所有方法,并且返回一个好的对象.
Director :导演类,负责安排已有模块的顺序,然后开始告诉builder 建造

13、责任链模式的定义是什么?包括定义,使用场景,角色说明

定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
使用场景:有许多对象可以处理用户的请求,希望程序在运行期间自动确定可以处理用户的对象。
希望用户不必明确地指定接收者的情况下,向多个接受者的一个提交请求。
程序希望动态制定可处理用户请求的对象集合。
角色说明
处理者:处理者是一个接口,负责规定具体处理者处理用户请求的方法以及具体处理者设置后继对象的方法。
具体处理者:具体处理者是实现处理者接口的类的实例。具体处理者通过调用处理者接口规定方法处理用户的请求,在执行该方法的过程中,如果发现能处理该请求,就处理有关数据,否则将请求传递给自己的后继者。

14、装饰模式的定义是什么?

动态地给对象添加一些额外的职责。就功能来说装饰模式比生成子类更为灵活。

15、策略模式的定义是什么?

定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换。本模式可以使得算法可独立于它们的客户而变换。

16、门面模式的定义是什么?

门面模式,是指提供一个统一的接口去访问子系统的多个不同的接口,它为子系统的一组接口提供一个统一的高层接口。从而使子系统更容易使用。

17、备忘录模式的定义是什么?

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

选择填空(选择20 10X2’ 判断10 10X1’)

可以参考这个https://wenku.baidu.com/view/7a0ea5c6250c844769eae009581b6bd97f19bcd0.html
主要考察了设计模式的原则(如里氏替换。。)、类型(如建造型。。),各个模式的定义和适用范围。

设计模式的原则:

依赖倒置原则(DIP):要依赖于抽象,不要依赖于具体:也就是说,抽象不应当依赖于细节,细节应当依赖于抽象;要针对接口编程,不要针对实现编程。
里氏替换原则(LSP):子类能替换其超类(is-a 关系),也就是说子类型(subtype)必须能替换其基类型(base type)。
接口分离原则(ISP):使用多个专门的接口比使用单一的总接口更好;换言之,从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小的接口之上的;不应该强迫客户程序依赖于它们不用的接口
单一职责原则(SRP):一个类应该有且只有一个改变的理由,它要求“一个设计元素只做一件事”。
开闭原则(OCP):不修改原有类就能扩展一个类的行为。也就是说,一个软件实体应当对扩展开放,对修改关闭。

设计模式的类型:

依据设计模式的行为方式,也即其目的,将设计模式分为三种类型:创建型模式、结构型模式、行为型模式

创建型模式:涉及对象的实例化,这类模型的优点不让代码依赖于对象的创建或排列方式,避免用户直接使用new运算符创建对象。:工厂模式、抽象工厂模式、建造者模式、单件模式、原型模式等。
结构型模式:涉及如何组合类和对象以形成更大的结构,和类有关的结构型模式涉及如何合理地使用继承机制;和对象有关的结构型模式涉及如何合理地使用对象组合机制。如:适配器模式、装饰模式、桥接模式、享元模式、外观模式、代理模式、组合模式。
行为型模式:涉及怎么合理地设计对象之间的交互通信,以及怎样合理地为对象分配职责,让设计富有弹性,易维护,易复用。如:责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、观察者模式、状态模式、策略模式、访问者模式等等。

程序设计重点(共三题,一共40分)

(具体实现要点)
1、代理:代理类中包含了对象,如果通过代理类判断,就调用对象的方法
2、观察者:观察者创建时都必须包含同一个center,center接收到消息changed变化,遍历观察者,使用它们的方法,changed再变化。
3、装饰:在具体装饰中保存具体组件的引用,在其中添加新功能,可以反复装饰。
4、备忘录
5、适配器:适配器中包含需要适配的变量和目标接口,以此实现适配。
6、责任链:通过设置处理者的nextHandle,连成链
7、策略:设置多个继承相同父类的策略,父类通过setStrategy(differentStrategy)实现不同策略的调用

1和6是我自己画的,不是UML图

1.代理模式:

为其他对象提供一种代理以控制对这个对象都访问
在代理类中创建了一个真实类,如果代理类通过了请求,就调用真实类中的方法

在这里插入图片描述

2.观察者

在这里插入图片描述

3.装饰模式:

在这里插入图片描述

4.备忘录

在这里插入图片描述

5.适配器

在这里插入图片描述

6.责任链

在这里插入图片描述
连接链最重要的一环是子类中的handler。

7.策略模式

在这里插入图片描述

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值