`

软考之设计模式篇

 
阅读更多

仅为了软考需要,整理文档,供自己复习使用

一 设计模式分为三大类:

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

二 各种设计模式:

1 单例模式

2 工厂模式

 工厂方法,只有一个抽象的方法,由子类完成实例化。抽象工厂,有抽象多个方法。这是2个的主要区别。

简单工厂 extends 抽象工厂或者工厂方法,不能称为模式。而抽象工厂或者工厂方法可以称为模式,因为可以重用,被当成模板。

3 建造者模式(builder)



 



 java中应用:

StringBuffer:线程安全,StringBuilder:性能好

4 原型模式 (prototype)

 通过"复制"一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的"原型",这个原型是可以定制的。

1 跟JVM有关 2 implements cloneable 3 ovveride clone()

使用场景:原型模式多用于创建复杂的或耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。原型模式的关注点在于大量相似对象的创建。



 

5 适配器模式(Adapter)

将一个类的接口转换成客户希望的另外一个接口

 

6 装饰者模式(Decorator),又称包装(Wrapper)模式

动态地给一个类添加一些额外的职责.不同装饰者可相容,彼此透明。基于现有方法的扩展。



 

7 代理模式(Proxy)

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



 

8 外观模式(facade)

"接口简化",为子系统中的一组接口提供一个一致的对外接口。处理客户与系统间的关系,单向。(与中介者对比)。用单个对象表示整个系统。



 应用场景: 

1)为一个复杂子系统提供一个简单接口。

2)提高子系统的独立性,实现松耦合。

3)在层次化结构中,可以使用Facade模式定义系统中每一层的入口。

参考:http://www.cnblogs.com/devinzhang/archive/2012/01/06/2315200.html

9 桥接模式(bridge)

把抽象部分和实现部分分离,使它们都可以独立的变化。



 应用场景

(1)不希望在抽象及抽象的实现部分之间有一个固定的绑定关系。

(2)类的抽象及它的实现都应该可以通过生成子类的方法加以扩充,使用桥接模式可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充。

(3)对一个抽象的实现部分修改应该对用户不产生影响,即客户的代码不必重新编译。

 

参考:http://blog.163.com/xiaokangzhijia@126/blog/static/1659548562010111843618596/

http://www.blogjava.net/qileilove/archive/2012/12/05/392498.html

10 组合模式(composite)

 将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性.

 

 

 

11 享元模式(flyweight)

GoF对享元模式的描述是:运用共享技术有效地支持大量细粒度的对象。
Flyweight模式是构造型模式之一,它通过与其他类似对象共享数据来减小内存占用。也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。在Flyweight模式中,由于要产生各种各样的对象,所以在Flyweight(享元)模式中常出现Factory模式。Flyweight的内部状态是用来共享的,Flyweight factory负责维护一个对象存储池(Flyweight Pool)来存放内部状态的对象。为了调用方便,FlyweightFactory类一般使用Singleton模式实现。Flyweight模式是一个提高程序效率和性能的模式,会大大加快程序的运行速度。

Flyweight模式的有效性很大程度上取决于如何使用它以及在何处使用它。当以下情况成立时使用Flyweight模式:
1 一个应用程序使用了大量的对象。
2 完全由于使用大量的对象,造成很大的存储开销。
3 对象的大多数状态都可以变为外部状态。
4 如果删除对象以外的状态那么可以用相对较少的共享对象取代很多组对象。
5 应用程序不依赖于对象标识。



 

 

 

参考:http://www.cnblogs.com/itTeacher/archive/2012/12/20/2826058.html

http://hi.baidu.com/isswangqing/item/2af19d75decab32ed7a89cb8

12 策略模式(Strategy)

又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

 

 缺点

1.客户端必须知道所有的策略类,并自行决定使用哪一个策略类。2.造成很多的策略类。

解决方案:采用工厂方法

http://www.cnblogs.com/mengdd/archive/2013/01/19/2867443.html

13 模板方法模式(Template Method)

模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。



 

14 观察者模式

 

15 迭代子模式(Iterator)

迭代子模式又叫游标(Cursor)模式,是对象的行为模式。迭代子模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象(internal representation)。



 

优点

聚集类的设计简单,不必对外提供遍历api。

一个聚集对象可以同时有几个迭代在进行中。

客户端不必知道聚集的具体类型。就可以读取和遍历聚集对象。即使聚集对象的类型发生变化也不会影响客户端的遍历。

缺点

迭代子模式给客户端一个聚集被顺序化的错觉

 

迭代子给出的聚集元素没有类型特征。(应用泛型可解决此问题)

http://blog.csdn.net/cheekis/article/details/4027124

16 责任链模式(Chain of Responsibility)

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



 

17 命令模式(command)1:1关系

将请求封装在对象中,这样它可以作为参数来传递,也可以被存储在历史列表或者以其他方式使用。

 


 

19 备忘录模式(memento)

又称标记(Token)模式,快照模式(Snapshot Pattern)。备忘录对象是一个用来存储另外一个对象内部状态的快照(snapshot)的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉住,并外部化,存储起来,从而可以在将来适合的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代子模式一同使用。

涉及三个角色:备忘录(Memento)角色、发起人(Originator)角色、负责人(Caretaker)角色。


 

功能:

发起人(Originator):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以根据需要决定Memento存储自己的哪些内部状态。
备忘录(Memento): 负责存储Originator对象的内部状态,并可以防止Originator以外的其他对象访问备忘录。备忘录有两个接口:Caretaker只能看到 备忘录的窄接口,他只能将备忘录传递给其他对象。Originator却可看到备忘录的宽接口,允许它访问返回到先前状态所需要的所有数据。
管理者(Caretaker):负责备忘录Memento,不能对Memento的内容进行访问或者操作。

http://blog.csdn.net/fg2006/article/details/6575760

20 状态模式(state)

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

  应用场景:如果需要在 1、不同的状态(可能会对应相应的行为), 2、不同的行为;  间反复进行切换,则应优先考虑状态模式



 

21 访问者模式(visitor)

目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。属性不变,方法扩展。不同访问者不相容,操作替换。(与装饰者对比)


 

22 中介者模式(mediator)

场景:集中负责维护对象模型的关系完整性 以及需要 封装对象间交互方式的时候.

简单点来说,将原来两个直接引用或者依赖的对象拆开,在中间加入一个“中介”对象,使得两头的对象分别和“中介”对象引用或者依赖。将多对多关系变为多对一,是系统与系统间的内部关系,双向。(与外观模式对比)



 

23 解释器模式(Interpreter

 应用:如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。而且当文法简单、效率不是关键问题的时候效果最好。 



 

 

 

参考:http://zz563143188.iteye.com/blog/1847029

  • 大小: 22.6 KB
  • 大小: 11.7 KB
  • 大小: 18.2 KB
  • 大小: 17.3 KB
  • 大小: 7.1 KB
  • 大小: 4.6 KB
  • 大小: 8.6 KB
  • 大小: 8.2 KB
  • 大小: 31.6 KB
  • 大小: 44 KB
  • 大小: 18.3 KB
  • 大小: 6.5 KB
  • 大小: 7.6 KB
  • 大小: 44.8 KB
  • 大小: 64.1 KB
  • 大小: 11.6 KB
  • 大小: 23 KB
  • 大小: 29.7 KB
  • 大小: 219.9 KB
  • 大小: 31.7 KB
分享到:
评论

相关推荐

    软考高级,系统架构师论文

    总的来说,备考软考高级系统架构师论文部分,考生需要深入了解系统架构设计的理论与实践,掌握各种架构模式和技术,同时提升自己的书面表达能力。通过研读范文、学习应试技巧、熟悉历年题目,可以有效提高备考效率,...

    软考高级-系统架构师论文范文50篇(含完整目录)

    内容概要: 1.包含系统架构师论文范文50篇 2.pdf格式,里面有整理好的书签,方便查阅 适用人群: ...20 论软件设计模式的应用 21 论软件的性能优化设计 22 论软件产品线技术 23 论分布式数据库的集成 ......

    软考系统架构设计师教程(第4版)+历年系统架构设计师考试试题分类精解(综合知识篇)+历年系统架构设计师考试试题分类精解_案例分析与论文篇 三本全集

    《软考系统架构设计师教程(第4版)》是一本为准备参加中国计算机技术与软件专业技术资格(水平)考试——系统架构设计师级别的考生量身定制的教材。此书全面覆盖了系统架构设计的基础理论、技术和实践,旨在帮助...

    27套软考系统架构设计师真题及答案解析(09年至17年).zip

    7. **架构模式与设计模式**:理解常见的架构模式(如微服务、SOA、分布式等)和设计模式,提升设计效率和代码质量。 8. **系统集成与互操作性**:学习如何实现不同系统间的无缝集成,确保各组件之间的有效通信。 9...

    软考高级系统架构师经验复习笔记仅供个人学习使用

    在学习过程中,不断实践和反思,结合具体案例分析,将理论知识转化为实际操作能力,这将使你在软考高级系统架构师的备考之路上更加得心应手。记得,系统架构并非孤立的知识点,而是需要综合运用多方面技能去解决复杂...

    软考高级系统架构设计师论文3篇

    "软考高级系统架构设计师论文3篇"可能包含的是一些资深架构师的经验分享,对实际工作中的挑战、解决方案以及最佳实践的探讨。下面将深入解析系统架构师这一领域的关键知识点。 1. **系统架构设计**:系统架构是软件...

    软件资格水平考试(软考)-高级-论文-精选论文6篇.zip

    本压缩包“软件资格水平考试(软考)-高级-论文-精选论文6篇.zip”包含了两篇系统分析师的精选论文,是准备高级软考的宝贵参考资料。 系统分析师作为软件开发过程中的关键角色,其职责涵盖需求分析、系统设计、项目...

    软考,软考高级系统架构师论文范文50篇(带目录),系统架构设计师教程(清华版本),系统架构设计师教程-希赛第四版

    《软考高级系统架构师论文范文50篇》与《系统架构设计师教程》是针对全国计算机技术与软件专业技术资格(水平)考试(简称“软考”)中的高级系统架构师资格认证的重要参考资料。该压缩包包含的内容丰富多样,旨在...

    系统架构师软考真题以及考点总结.rar

    这份文档可能包括了系统架构设计的基本原则、常用架构模式、系统性能优化策略、安全性设计、项目管理等方面的内容。考生需要仔细阅读并理解这些要点,以确保在实际考试中能快速定位问题并给出准确答案。 再者,...

    软考高级系统架构师论文范文50篇

    3. **架构模式与原则**:如单一职责原则、开闭原则、依赖倒置原则等设计模式和架构原则,以及它们在实际项目中的应用。 4. **技术选型**:如何根据项目需求选择合适的编程语言、数据库、中间件等技术栈,评估各种...

    2023软考高级系统分析师真题回忆版

    本篇文章将深入解析部分试题,以帮助备考者更好地理解和掌握相关知识点。 1. 信息系统的构成与企业战略规划: 信息系统的构建需要与企业的战略规划紧密相连,以确保系统的功能与业务目标一致。面向服务(SOA)方法...

    高级架构师软考.zip

    《高级架构师软考》资料集是一份针对高级软件架构师考试的重要学习资源,它包含了历年来的案例分析和深入讲解,旨在帮助考生更好地理解和掌握软件架构设计的核心概念、原则和实践。这份压缩包中的两个主要文件——...

    计算机技术与软件专业技术资格(水平)考试 软考 论文练习稿纸

    2. **软件工程**:熟悉软件开发的全过程,包括需求分析、设计、编码、测试、维护等阶段,理解各种开发模型(如瀑布模型、敏捷开发)和设计模式。同时,掌握软件质量管理、项目管理等相关知识。 3. **法律法规**:...

    软件资格水平考试(软考)-高级-论文样例:J2EE企业内网应用论文_经典_字数正好.doc

    这种架构设计旨在实现负载均衡、提升安全性,并通过MVC设计模式(Model、View、Controller)来分离业务处理和视图展示,提高系统的灵活性和可维护性。 此外,论文还提到了安全策略的制定,这在银行系统中尤为重要。...

    软考系统架构设计师笔记精心整理 .docx

    综上所述,从系统集成模式到具体的架构设计策略,再到软件设计模式的应用,本篇文档全面覆盖了系统架构设计师在实际工作中所需要掌握的核心知识点。通过对这些内容的学习和理解,可以有效地帮助考生理解和掌握系统...

    软考论文汇总.rar 考试知识点

    内容可能涉及系统架构设计的基本模型、架构模式、系统性能优化策略、安全性设计以及架构评估方法等。 其次,《AAA希赛 2023系统架构设计师论文指导.pdf》是专门针对论文写作部分的指导材料。系统架构设计师考试中,...

    软考(系统分析师,系统架构师,项目管理师等)作文练习纸

    这篇文档将详细讨论这个领域的关键知识点,并为考生提供备考建议。 首先,我们要明白“作文练习纸”在软考中的角色。这种练习纸的设计与实际考试中的格式相似,目的是帮助考生熟悉考试环境,提高写作效率。系统分析...

    系统架构师论文-50篇

    2. **设计原则与模式**:论文可能深入解析了系统架构设计中的基本原则,如松耦合、高内聚、模块化设计等,并可能探讨了各种架构模式,如工厂模式、观察者模式等,以及如何在实际项目中应用它们。 3. **性能优化**:...

    软考系统架构设计师历年论文(2009-2018)题目

    根据提供的信息,我们可以总结出以下相关的IT知识点,这些...以上仅为部分年份的部分论文主题概览,每篇论文都深入探讨了特定的技术领域和应用实践,对于理解和掌握系统架构设计的关键概念和技术有着重要的指导意义。

Global site tag (gtag.js) - Google Analytics