`
mengqingyu
  • 浏览: 334327 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

设计模式 笔记(附带代码)

阅读更多
1.策略模式
    例如:动物有很多行为,把共同的行为用抽象类写出,并继承。不同的行为用一组接口和实现类来封装,
让他们之间可以互相替换,把接口的对象封装在抽象类中,提供set方法以便动态改变。这样可以被轻易地扩
充与改变。如果需要,甚至在运行时也可以改变行为。
场景:httpservlet#service

2.观察者模式
    定义了对象之间的一对多关系,主题用一个共同的接口来更新观察者,主题类中存放着观察者对象集合,当主题有数据更新时候可以通知
多个观察者对象,包括通用的java.util包中的Observable,Observer。应用场景Swing框架的JButton实现
场景:广播机制,聊天室,servlet监听器

3.装饰者模式
    在设计中,允许行为可以被扩展,而无须修改现有代码,通过组合和委托可用于在运行时动态地加上新
的行为。实现方式:装饰者和被装饰者拥有共同的接口(Component),装饰者是核心组件通过接口方法完成特定的目标,而被装饰者类继承拥有Component接口引用的抽象超类,通过被装饰者构造器将装饰者传入,并且在被装饰者实现的Component接口方法中通过调用继承的Component引用的被装饰者对象方法,并且在此前后加入装饰内容。
应用场景:包括java.io包中的被装饰者类:InputStream,装饰者类:BufferedInputStream。
场景:IO文件流套缓冲流

4.工厂方法模式
简单工厂模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到工厂方法模式,创建一个工厂接口和创建多个工厂实现类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。

5.抽象工厂模式
工厂是用来封装对象的创建,工厂方法使用继承:把对象的创建委托给子类,子类实现工厂方法来创建对象。所有工厂模式都通过减少应用程序和具体类之间的依赖促进松耦合。

6.单态模式
    单态模式确保程序中一个类最多只有一个实例,并提供访问这个实例的全局点。

7.迭代器模式
    迭代器提供了一个通用的接口,让我们遍历聚合的项,当我们编码使用聚合的项时,就可以使用多态机制。
场景:iterator

8.代理模式
    代理模式为另一个对象提供代表,以便控制客户对对象的访问,动态创建并实例化对象的代理类,并未查询数据库信息初始化对象属性,而是真正调用到使用了数据库内容的对象属性时,再查询数据库初始化属性。
应用场景:spring AOP,hibernate数据延迟加载,在加载对象时,通过代理对象。

9.责任链模式
    场景:try catch,js事件冒泡和捕获机制,servlet过滤器

10.适配器模式
    适配器模式与装饰者模式很类似,区别在于适配器改变接口以符合客户的期望。以下附件是对应以上几个模式的实例。
场景:IO字节流转字符流

11.享元模式
    Flyweight享元,可以理解为共享元对象,也就是共享细粒度对象。享元模式就是通过使用共享的方式,达到高效地支持大量的细粒度对象。它的目的就是节省占用的空间资源,从而实现系统性能得到改善。享元模式主要作用是实现对象的共享,即使用共享池,从而减少内存分配的开销。享元模式通常与工厂模式一起使用,它包含了多个共享的组合对象,因此:享元模式=单例模式+工厂模式+合成模式
场景:线程池

12.原型模式:浅复制_深复制_Clonable接口

13.模板方法模式:父类定义模板骨架,子类不可覆盖,只需重写部分抽象回调方法。Jdbctemplate

14.建造者模式:quartz创建定时器

15.桥接模式:JDBC驱动程序

16.组合模式:XML文件解析,资源管理器,junit单元测试

17.外观(门面)模式
外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口

18.中介者模式:MVC、invoke

19.命令模式:数据库事务

20.解释器模式:groovy、数学解析器sql、正则、el、Expression4j

21.访问者模式:XML文档解析、复杂嵌套对象

22.状态模式:银行系统中账号状态管理、线程状态之间的切换

23.备忘录模式:数据库事务回滚

分享到:
评论

相关推荐

    springmvc完整笔记附带说明代码.pdf

    Spring MVC是一个基于Java的实现MVC设计模式的请求驱动类型的轻量级Web框架,通过分离控制器、模型对象、分派器以及处理程序对象来提供Web层的模型设计。Spring MVC是Spring框架的一部分,它通过一套注解,让POJO...

    基于ASP的笔记本销售网站的设计与实现(源代码+论文).zip

    标题表明这个项目不仅包括了网站的源代码,还附带了相关的论文,意味着它可能包含了详细的理论分析和技术实施步骤。 【描述解析】 描述部分重复了标题,确认这是一个包含源代码和论文的项目包,专注于笔记本电脑的...

    python学习笔记附带源码及实战

    源码是程序的基础,通过阅读和分析源码,我们可以深入理解各种算法和设计模式。此压缩包提供的源码,如“10-正则表达式”、“12-电子词典”等,都是实际应用中的实例,有助于提升编程能力,尤其是对于正则表达式的...

    达内云笔记项目完整代码+注释

    该项目不仅提供了完整的源代码,还附带了详尽的注释,为初学者提供了清晰的学习路径。 首先,我们来了解一下SSM框架。Spring作为核心容器,负责管理应用对象的生命周期和依赖关系,通过IOC(控制反转)和AOP(面向...

    Android源码设计模式解析与实战

    本书不仅理论与实践相结合,而且还提供了丰富的示例代码(demo),帮助读者在实际操作中理解和掌握设计模式。 设计模式是软件工程中的宝贵经验总结,它是一种在特定场景下解决问题的标准解决方案。在Android开发中...

    笔记本EC源代码demo版

    5. **电源管理算法**:笔记本ECU中的电源管理代码可能会涉及动态电压频率调整、睡眠模式切换等,这些都是优化电池寿命和性能的关键。 6. **热管理**:源代码可能包含温度监测和风扇控制逻辑,以防止过热并保持系统...

    刚学习struts1整理的笔记附带文档下载

    Struts1是一个经典的Java Web开发框架,由Apache软件基金会维护,它基于Model-View-Controller(MVC)设计模式,帮助开发者构建结构清晰、可维护性强的Web应用程序。本笔记将详细阐述Struts1的核心概念、主要组件...

    ActiveMQ 教学视频/教程 /附带笔记等资源

    在这个"ActiveMQ 教学视频/教程 /附带笔记等资源"的压缩包中,你将找到一系列关于如何使用ActiveMQ作为中间件的教育资源。 首先,让我们深入了解ActiveMQ的核心概念和功能: 1. **核心概念**: - **消息队列...

    文件管理器源码与学习笔记

    4. **设计模式应用**:介绍源码中运用的设计模式,如工厂模式、观察者模式等。 5. **性能测试与改进**:测试结果的分析,以及性能优化的策略和实施步骤。 通过深入学习这个压缩包中的源码和笔记,你可以获得实际的...

    FPGA自学笔记——设计与验证jmb

    逻辑设计阶段,HDL语言用于描述数字系统的逻辑功能,读者需要掌握基本的语句结构和设计模式。 FPGA设计工具,如Xilinx的Vivado、Intel的Quartus II或 Mentor Graphics的ModelSim等,在设计流程中扮演着重要角色。...

    模式识别与机器学习笔记,代码.zip(毕设&课设&实训&大作业&竞赛&项目)

    可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关...

    STM8+OPT3001,附带完整工程,原理图和自学笔记.zip

    代码,完整的工程,原理图等文件都放一起了,另外,我写了一份学习笔记,详细的说明了OPT3001的工作流程和原理,单片机如何去控制OPT3001工作都写的很清楚了,保证看完都能懂。 OPT3001采集的光照强度数值可以用查询...

    Struts2 Basic 14_01 学习笔记(附带SSH所有的jar)

    Struts2是一个非常著名的Java Web开发框架,它基于Model-View-Controller (MVC)设计模式,用于构建可维护性高、结构清晰的企业级应用程序。在这个"Struts2 Basic 14_01 学习笔记"中,我们将会探讨Struts2的基础知识...

    python项目最新飞机大战优化版(代码 笔记 截图 实验报告).rar

    附带的实验报告和笔记对学习者来说是宝贵的资源。它们详细记录了开发过程,包括遇到的问题、解决方案、代码优化思路等,有助于学习者避免重复错误,快速掌握游戏开发流程。 总结,Python“飞机大战”项目是一个理想...

    DWR学习笔记(附带很详细的例子)

    【DWR(Direct Web Remoting)】是一种开源的Java库,专为开发包含AJAX技术的网站而设计。DWR的核心功能是使浏览器中的JavaScript能够直接调用服务器端的Java函数,仿佛这些函数就在浏览器内部运行。这得益于DWR的两...

    JAVA医疗项目高端项目实战 JAVA实现医院建设管理全面实战课程 附带资料+代码+笔记

    - **微服务架构**:采用微服务架构模式,将系统划分为多个小而自治的服务,每个服务都围绕着特定的业务能力构建,独立部署且能够独立扩展。 - **API Gateway**:作为微服务之间的通信桥梁,提供统一的入口,负责路由...

Global site tag (gtag.js) - Google Analytics