`
long254229962
  • 浏览: 8812 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
社区版块
存档分类
最新评论

面试要点之——23种设计模式及其应用场景

阅读更多
设计模式主要分三个类型:创建型、结构型和行为型。
其中创建型有:
    一、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点 ;     应用场景:一个无状态的类使用单例模式节省内存资源。

    二、Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。        应用场景:一系列相互依赖的对象有不同的具体实现。提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合。

    三、Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类。     应用场景:由于需求的变化,一个类的子类经常面临着剧烈的变化,但他却拥有比较稳定的接口。使用一种封装机制来“隔离这种易变对象的变化”,工厂方法定义一个用于创建对象的接口,让子类来确定创建哪一个具体类的对象,将对象的实例化延迟。

     四、Builder,建造模式:将一个复杂对象的构建与他的表示相分离,使得同样的构建过程可以创建不同的表示。      应用场景:一个类的各个组成部分的具体实现类或者算法经常面临着变化,但是将他们组合在一起的算法却相对稳定。提供一种封装机制 将稳定的组合算法于易变的各个组成部分隔离开来。

    五、Prototype,原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。       应用场景:用new创建一个对象需要非常繁琐的数据准备或者权限


行为型有:
    六、Iterator,迭代器模式:提供一个方法顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示。       应用场景:迭代。


    七、Observer,观察者模式:定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知自动更新。     应用场景: 某个实例的变化将影响其他多个对象。


    八、Template Method,模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,TemplateMethod使得子类可以不改变一个算法的结构即可以重定义该算法的某些特定步骤。   应用场景:一个操作的步骤稳定,而具体细节的改变延迟的子类


     九、Command,命令模式:将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队和记录请求日志,以及支持可撤销的操作。        应用场景:将命令者与执行者完全解耦。


    十、State,状态模式:允许对象在其内部状态改变时改变他的行为。对象看起来似乎改变了他的类。           应用场景:一个对象的内部状态改变时,他的行为剧烈的变化。


    十一、Strategy,策略模式:定义一系列的算法,把他们一个个封装起来,并使他们可以互相替换,本模式使得算法可以独立于使用它们的客户。        应用场景:

    十二、China of Responsibility,职责链模式:使多个对象都有机会处理请求,从而避免请求的送发者和接收者之间的耦合关系

    十三、Mediator,中介者模式:用一个中介对象封装一些列的对象交互。

    十四、Visitor,访问者模式:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这个元素的新操作。

    十五、Interpreter,解释器模式:给定一个语言,定义他的文法的一个表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

    十六、Memento,备忘录模式:在不破坏对象的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

结构型有:
    十七、Composite,组合模式:将对象组合成树形结构以表示部分整体的关系,Composite使得用户对单个对象和组合对象的使用具有一致性。

    十八、Facade,外观模式:为子系统中的一组接口提供一致的界面,fa?ade提供了一高层接口,这个接口使得子系统更容易使用。

    十九、Proxy,代理模式:为其他对象提供一种代理以控制对这个对象的访问

    二十、Adapter,适配器模式:将一类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作那些类可以一起工作。

    二十一、Decrator,装饰模式:动态地给一个对象增加一些额外的职责,就增加的功能来说,Decorator模式相比生成子类更加灵活。

    二十二、Bridge,桥模式:将抽象部分与它的实现部分相分离,使他们可以独立的变化。
    二十三、Flyweight,享元模式

   23种设计模式要在这里详细的都说一遍内容实在太多了啊,推荐你一本好书《软件秘笈:设计模式那点事》,里面讲解的23中设计模式例子很生动,容易理解,还有JDK中设计模式应用情况,看了收获挺大的!百度里面搜“设计模式”,第一条中设计模式百度百科中就有首推该图书,浏览量在20几万以上的,不会错的。
分享到:
评论

相关推荐

    java面试——杭州-阿里云-Java中级.zip

    6. **设计模式**:熟悉常见的设计模式,如单例、工厂、抽象工厂、建造者、装饰器、适配器、代理、观察者、责任链、状态、策略、模板方法等,并能根据场景合理应用。 7. **JVM**:理解JVM的内存结构(堆、栈、方法区...

    Java程序员面试宝典.pdf

    这本宝典不仅提供了一系列实战案例,还深入探讨了Java程序员面试中常见的基础性问题,例如`final`关键字、`super`关键字的用法、构造函数的概念及其应用场景等。通过这些具体的知识点学习,求职者能够更好地准备面试...

    Android面试要点

    ### Android面试要点详解 #### 一、Handler, ThreadLocal, HandlerThread - **Handler机制**: - **工作原理**:`Handler`是Android中消息传递的重要组件之一,主要用于发送和处理消息。它通过`Looper`和`Message...

    经典面试题目

    12. **设计模式**:如单例模式、工厂模式、观察者模式、装饰器模式等常见的设计模式及其应用场景。 SSH框架部分,主要涉及到以下内容: 1. **Spring框架**:包括依赖注入(DI)、AOP(面向切面编程)、事务管理,...

    程序员面试宝典-java-interview-dictionary-master.zip

    1. 设计模式:深入理解23种设计模式,包括单例、工厂、观察者、装饰器、代理等,并能灵活运用到实际项目中。 2. 数据库:掌握SQL语句,了解关系型数据库与NoSQL的区别,理解事务处理与索引优化。 3. 框架应用:...

    如何看人不走眼—结构化面试技巧gotoxjun.pptx

    结构化面试是一种科学而系统的人才选拔方法,旨在减少主观偏见,有效评估候选人,本文将深入探讨结构化面试的技巧和要点。 首先,面试官需了解不同类型的面试,并根据实际情况做出选择。结构化面试通常包括顺序性...

    IBM面试题目(特别绝对有作用的)

    6. **设计模式**:熟悉常见的设计模式,如单例、工厂、装饰器、观察者等,并能结合实际问题应用。 7. **Spring框架**:了解依赖注入、AOP、事务管理等核心概念,以及Spring Boot和Spring Cloud等相关技术。 对于...

    C#面试机理性技术文档

    14. **设计模式**:熟悉常见的设计模式,如单例、工厂、装饰器、观察者等,并能结合C#实现。 15. **单元测试**:了解如何使用NUnit、xUnit等工具进行单元测试,以及TDD(Test-Driven Development)的概念。 以上...

    数据库面试 笔试题集

    了解这些数据结构的特点及其应用场景是非常重要的。 - **二叉树**:在一棵二叉树上,特定层次上的结点数量是有上限的,这是由二叉树的性质决定的。例如,题目中的选项B(16)给出了第五层最多可能有的结点数。 - **...

    java笔试面试宝典

    《JAVA笔试面试宝典》是IT行业求职者和专业技术人员准备JAVA相关职位笔试与面试的必备资料,本书全面深入地解析了JAVA的核心概念和技术要点,特别聚焦于企业级开发框架——EJB(Enterprise JavaBeans)的理论与实践...

    java疯狂讲义,PDF版最新全版

    同时介绍代理模式的基本思想及其应用场景。 - **Java虚拟机(JVM)**:讲解JVM的工作原理,包括内存模型、垃圾回收机制、性能优化策略等。 - **设计模式**:介绍常用的设计模式(如单例模式、工厂模式、观察者模式等)...

    2021年最新Java后端学习路线,适用于所有想要踏入Java行业的初学者(csdn)————程序.pdf

    最后,理解计算机网络、数据结构、算法、操作系统等基础知识,以及对MySQL和Redis的面试题总结,Spring和MyBatis等框架的面试要点,将有助于你在求职过程中脱颖而出。 总之,Java后端开发的学习是一个持续的过程,...

    java 高级架构进阶学习

    - **设计模式**:重点考察工厂模式、单例模式、观察者模式等在实际项目中的应用。 - **系统设计**:考查大型系统设计能力,例如高并发场景下的系统架构设计、数据库分库分表策略等。 - **性能优化**:涉及代码...

    亮剑.NET深入体验与实战精要2

    13.4.4 设计模式、条件外置及反射技术的应用 471 13.5 面向对象分析(OOA)的方法 475 13.6 面向对象设计的原则 478 13.6.1 优先使用(对象)组合,而非(类)继承 478 13.6.2 针对接口编程,而非(接口的)实现 481...

    亮剑.NET深入体验与实战精要3

    13.4.4 设计模式、条件外置及反射技术的应用 471 13.5 面向对象分析(OOA)的方法 475 13.6 面向对象设计的原则 478 13.6.1 优先使用(对象)组合,而非(类)继承 478 13.6.2 针对接口编程,而非(接口的)实现 481...

    C语言深度解剖

    通过上述内容的学习与实践,读者不仅能深入了解C语言的各项特性及其应用场景,还能为应对技术面试做好充分准备。C语言虽然历史悠久,但它在现代软件开发中的地位仍然无可动摇。只有不断深入学习,才能真正掌握这门...

    高质量C语言编程—软件工程师面试必备

    ### 高质量C语言编程——软件工程师面试必备 #### C语言知识要点与面试准备 **标题解析:** 标题“高质量C语言编程—软件工程师面试必备”直指C语言在软件工程领域的核心地位,强调了掌握高质量C语言编程对于通过...

    JAVA 面试题总览(书签完整版)

    ### JAVA基础知识要点解析 #### 1. JAVA中的几种基本数据类型及其占用字节数 - **byte**: 占用1字节(8位),范围-128至127。 - **short**: 占用2字节(16位),范围-32768至32767。 - **int**: 占用4字节(32位)...

Global site tag (gtag.js) - Google Analytics