《设计模式》Java版期末总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章设计模式概念
1.设计模式
名词解释:一套被反复使用,多数人知晓,经过分类编目的优秀代码设计经验的总结。

作用:重用代码,使代码更易理解,保证代码的可靠性。

2.可复用面向对象软件系统一般划分为两大类:应用程序工具箱、框架。

3.Java设计模式贯彻的原理:面向接口编程,而不是面向实现。

目标原则:降低耦合,增强灵活性。

4.设计模式的要素
模式名称、问题、环境或初始环境、解决方案、效果、举例、末态环境、推理、其他有关模式、已知的应用。

5.常用的设计模式有23种。

按特点分为三类:创建型,结构型,行为型。

6.创建型模式
定义:用来创建对象的模式,抽象了实例化的过程,帮助一个系统独立于其关联对象的创建、组合和表达方式。

功能:将系统所使用的具体类的信息封装起来;隐藏类的实例是如何被创建和组织的。

作用:封装创建逻辑,不仅仅是new一个对象那么简单;封装创建逻辑变化,客户代码尽量不修改,或尽量少修改。

常见的创建型设计模式:
单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。

7.结构型模式
定义:类和对象的结构,它采用继承机制来组合接口或实现,或者通过组合一些对象实现新的功能。

常见的结构型设计模式有:
代理模式、装饰模式、适配器模式、组合模式、桥梁模式、外观模式、享元模式。

8.行为型模式
定义:关注的是对象的行为,用来解决对象之间的联系问题
常见的行为型设计模式有:
模板方法模式、命令模式、责任链模式、策略模式、迭代模式、中介者模式、观察者模式、备忘录模式、访问者模式、状态模式、解释器模式
课后题:
1、设计模式起源于:建筑工程设计
2、下面不属于设计模式的要素的是:因素
3、目前有23中设计模式,分为3大类
4、设计模式分为创建型、结构型和行为型三大类型
第二章设计原则
1.单一职责原则(SRP)
名词解释:一个类,只有一个引起它变化的原因,应该只有一个职责。

①降低类的复杂性
②提高类的可读性
③提高代码的可维护性和复用性
④降低因变更引起的风险。

作用:单一职责原则提出了一个编写程序的标准,用“职责”或“变化原因”来衡量接口或类设计是否优良,但“职责”和“变化原因”都是不可度量的。

2.里氏替换原则(LSP)
名词解释:所有引用基类的地方必须能透明地使用其子类对象,反之则不行。

优点:
①代码共享,减少创建类的工作量。

②提高代码可重用性
③提高代码的可拓展性
④提高产品或项目的开发性。

体现里氏替换原则的有如下几个模式:
策略模式、组合模式、代理模式
3.依赖倒置原则(DIP)
名词解释:高层模块不应该依赖低层模块,两者都应依赖其抽象,抽象不依赖细节,而细节依赖抽象。

优点:
①减少类间的耦合性
②提高系统的稳定性,降低并行开发引起的风险。

③提高代码的可读性和可维护性。

作用:适用于大中型项目,是实现开闭原则的重要途径,依赖倒置原则没有实现,就不能实现对扩展的开放,对修改关闭。

4.接口隔离原则(ISP)
名词解释:一个类对另外一个类的依赖性应当是建立在最小的接口上,使用多个专门的接口比使用单一的总接口要好。

简述接口隔离原则:
①一个类对另外一个类的依赖性应当是建立在最小的接口上的。

②一个借口代表一个角色,不应当将不同的角色都交给一个接口。

③不应该强迫客户依赖于它们不用的方法。

作用:只提供调用者需要的方法,屏蔽不必要的方法;带来了设计的灵活性,并降低了整个项目的风险,当业务变化是能够快速应付。

5.迪米特法则(LoD)
名词解释:一个对象应当对其他对象尽可能少的了解。

作用:减少类之间的关系,降低类之间的耦合。

体现迪米特法则的设计模式有两个:外观模式、中介者模式
6.开闭原则(OCP)
名词解释:一个软件实体应当对扩展开放,对修改关闭。

优点:①提高复用性②提高可维护性③提高灵活性④易于测试
重要性:开闭原则是面向对象设计的终极目标,其他设计原则都可以看做是开闭原则的实现方法。

1、里氏替换原则简称:LSP
2、关于单一职责原则描述错误的是:单一职责原则提高类之间的耦合性。

(降低)
3、关于依赖倒置原则描述错误的是:依赖倒置原则中,高层模块不应该依赖低层模块,但
低层模块依赖与高层模块。

(都依赖于其抽象)
4、设计模式中的六个主要原则包括:单一职责原则、里氏替换原则、依赖倒置原则、接口
隔离原则、迪米特法则和开闭原则。

5、在设计模式中,对迪米特法则进行应用的设计模式有外观模式和中介者模式
第三章创建型模式
1.单例模式:一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

在Java中有两种表现形式:饿汉式单例类;懒汉式单例类。

功能上分为:状态单例类;无状态单例类。

2.工厂方法模式:定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中
3.抽象工厂模式:工厂方法的升级,为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。

4.建造者模式:将一个复杂对象的构建与其表示分离,使同样的构建过程创建出不同的表示
5.原型模式:用原型实例指定创建对象的种类,并通过复制这些原型创建新的对象。

课后题:
1、不属于创建型模式的是:策略模式
2、关于单例模式说法错误的是:单例模式可以具有子类,并进行扩展。

(单例模式无法创
建子类,扩展困难)
3、关于工厂方法模式错误的是:工厂方法模式不可以与其他模式混合使用,不能进行扩展。

(可以与其他模式混合使用)
4、关于抽象工厂模式说法正确的是:抽象工厂模式与工厂方法模式相似,也具有抽象工厂、
具体工厂、抽象产品和具体产品4个角色;抽象工厂模式是工厂方法模式的进一步抽象,针对的是一族产品
5、简述建造者模式
将一个复杂对象的构建与其表示分离,使得同样的构建过程,可以创建不同的表示。

6、简述原型模式
用原型实例指定创建对象的原型,创建新的对象
第四章结构型模式
课后题:
1、属于结构型模式的是:代理模式、适配器模式、享元模式
2、关于装饰模式不正确的是:
装饰模式只有构件和装饰这两个角色(抽象构件角色、具体构件角色、、装饰角色、具体装饰角色)
3、关于适配器模式不正确的是:适配器模式简化了系统并提高系统的效率(对系统进行了扩展)
4、关于外观模式不正确的是:外观模式满足闭合原则(不满足)
5、简述桥梁模式和享元模式
桥梁模式:将抽象和实现解耦,使得两者可以独立的变化
享元模式:使用共享对象可有效的支持大量的细粒度的对象
第五章行为型模式(1)
1、模板方法模式的优点:
①封装不变的部分,扩展可变部分
②提取公共部分代码,便于维护
③行为由父类控制,子类实现。

2、命令模式的优点:
①类间解耦
②可扩展性
③命令模式结合其他模式会更优秀。

3.责任链模式的优点:
①将请求和处理分开②提高系统的灵活性。

4策略模式的优点:
①策略模式提供了管理相关的算法族的办法。

②策略模式提供了可以替换继承关系的办法。

③使用策略模式可以避免使用多重条件转移语句。

5.迭代器模式的优点:
①迭代器模式简化了访问容器元素的操作,具备一个统一的遍历接口。

②封装遍历算法,使算法独立于聚集角色。

课后题:
1、不属于行为模式的是:工厂方法模式
2、关于模板方法模式说法错误的是:
模板方法模式破坏了开闭原则(符合开闭原则)
3、关于命令模式说法错误的是
命令模式包括命令和执行命令这两个角色(还有具体命令角色、接受者角色、调用者角色)命令模式提高类之间的耦合性(降低)
4、关于策略模式说法错误的是:
策略模式只包括抽象策略和具体策略这两个角色(还有环境角色)
5、关于责任链模式说法错误的是:
责任链模式是一种不经常使用的行为模式(常见)
责任链模式提高了程序的性能且易于调试(降低性能,不易调试)
6、迭代器模式的4个角色分别是抽象迭代器、具体迭代器、抽象聚集和具体聚集。

第六章行为型模式(2)
1.中介者模式:
名词解释:用一个中介对象封装一系列对象的交互,中介者使各对象不需要显式地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

适用场景:一个类依赖多个类的情况下,但并不是只要有依赖关系就考虑使用中介者模式。

类图:
2.观察者模式
名词解释:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖 于它的对象都会得到通知并被自动更新。

适用场景: ① 关联行为场景 ② 事件多级触发场景 ③ 跨系统的消息交互场景。

类图:
3.备忘录模式
名词解释:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这 个状态,这样以后就可以将该对象回复到原先保存的状态。

适用场景:
① 需要保存和恢复数据的相关状态场景
② 提供一个可回滚的操作c :需要监控副本的场景 ③ 数据库连接的事务管理使用 类图:
4.访问者模式
名词解释:封装一些作用于某种数据结构中的各个元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。

使用场景:
①一个对象结构包含很多类对象,它们有不同接口,对象实施依赖于具体类的操作时即使用迭代器模式也不能胜任的场景。

②需要对一个对象结构中的对象进行很多不同并且不相关的操作,避免操作污染类。

③业务规则要求遍历多个不同的对象。

课后题:
1、关于中介者模式说法错误的是:
中介者模式使对象间紧密耦合(松耦合)
2、关于备忘录模式说法错误的是:
备忘录模式可以保存对象的状态,但不能恢复数据。

(能够恢复数据)
3、关于访问者模式说法错误的是:
访问者模式包括访问者和被访问者两个角色(包括结构对象角色、抽象对象角色、具体访问者角色等)
5、状态模式的3个角色分别是抽象状态角色、具体状态角色和环境角色
第七章混合设计模式
课后题:
1、说法错误的是:
工厂策略模式是抽象工厂模式和策略模式的混合使用模式(工厂方法模式)
2、命令链模式是命令模式和责任链模式的混合使用
3、工厂策略模式是工厂方法模式和策略模式的混合使用
4、观察中介者模式是观察者模式和中介者模式的混合使用
5、规格模式是策略模式和组合模式的扩展
第八章设计模式对比
1.创建型模式对比:
工厂方法模式:注重的是整体对象的创建方法;
建造者模式:注重部件构造的过程,旨在通过一步步精确构造,创建出一个复杂的对象;抽象工厂模式:实现对产品家族的创建,不关心构造过程。

结构型模式对比:
装饰模式是代理模式的一个特殊应用,虽然他们都具有相同的接口,但装饰模式是对类的功能进行加强或减弱,重点是类的功能变化,而代理模式着重代理过程的控制。

装饰模式和适配器模式都能对类进行“包装”,但装饰模式装饰的是同一家族,而适配器模式可以修饰不同接口的对象,主要是将非本家族的对象伪装成同一家族的对象。

行为型模式对比:
策略模式是封装算法,认为算法是一个完整的、不可拆分的原子业务,其目的是让这些算法独立,而且可以相互替换,让行为的变化独立于拥有行为的客户。

命令模式则是对动作的解耦,把一个动作的执行分为执行对象、执行行为,让两者相互独立而互不影响。

课后题:
1、关于工厂方法模式、抽象工厂模式和建造者模式说法错误的是:
工厂方法模式、抽象工厂模式和建造者模式都属于行为型模式(创建型)
2、关于代理模式、装饰模式和适配器模式说法错误的是:
代理模式对类的功能进行加强或减弱,重点是类的功能变化(装饰模式)
3、关于策略模式和命令模式说法错误的是:
命令模式适用于算法要求变换的场景,而策略模式适用于解耦对象的场合(相反)。

相关文档
最新文档