23 种设计模式举例、源码及优缺点(JDK举例)

23 种设计模式定义

  1. 单例模式(Single Pattern):某个类只能存在一个对象实例
  2. 工厂模式(Factory Pattern):由工厂对象决定创建出哪种产品类的实例
  3. 原型模式(Prototype Pattern):用原型实例指定创建对象种类,并通过拷贝原型创建新的对象
  4. 建造者模式 / 生成器模式(Builder Pattern):将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象
  5. 适配器模式(Adapter Pattern):将某个类的接口转换成客户端期望的另一个接口表示
  6. 桥接模式(Bridge Pattern):将实现与抽象分离,放在两个不同的类层次中,可以独立改变
  7. 装饰者模式(Decorator Pattern):动态地将新功能附加到对象上
  8. 组合模式 / 部分整体模式(Composite Pattern):依据树形结构来组合对象,用来表示部分以及整体层次
  9. 外观模式 / 过程模式(Facade Pattern):为调用端提供统一的调用接口
  10. 享元模式 / 蝇量模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度的对象
  11. 代理模式(Proxy Pattern):通过代理对象访问目标对象
  12. 模板模式 / 模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,将一些步骤延迟到子类中
  13. 命令模式(Command Pattern):将发起请求的对象与执行请求的对象解耦
  14. 访问者模式(Visitor Pattern):将数据结构与数据操作分离
  15. 迭代器模式(Iterator Pattern):提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素
  16. 观察者模式(Observer Pattern):对象之间多对一依赖的一种设计方案
  17. 中介者模式(Mediator Pattern):用一个中介对象来封装一系列的对象交互
  18. 备忘录模式(Memento Pattern):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态
  19. 解释器模式(Interpreter Pattern):给定一个语言并定义其文法表示,使用该解释器来解释语言中的句子
  20. 状态模式(State Pattern):解决对象在多种状态转换时,需要对外输出不同的行为的问题
  21. 策略模式(Strategy Pattern):定义算法族,分别封装起来,让他们之间可以互相替换
  22. 职责链模式 / 责任链模式(Chain of Responsibility Pattern):为请求创建一个接收者对象的链

6、23 种设计模式举例、源码及优缺点

分类设计模式举例源码优点缺点
创建型单例模式SingletonJDK 中java.lang.Runtime节省资源,提高性能
~工厂模式披萨店JDK 中Calendar统一管理,便于维护
~原型模式克隆羊Spring 中ApplicationContext简化过程,提高效率复杂;违背 OCP
~建造者模式盖房子JDK 中StringBuilder解耦创建过程
结构型适配器模式插座SpringMVC 中HandlerAdapter兼容性
~桥接模式手机JDBC 中Driver分离抽象与实现
~装饰者模式星巴克咖啡JDK 中FilterlnputStream动态扩展功能
~组合模式学校院系JDK 中HashMap明确部分与整体层次
~外观模式影院管理MyBatis 中Configuration屏蔽细节,简化操作过多不利于维护
~享元模式网站展示JDK 中Integer降低内存,提高效率复杂
~代理模式教师教书JDK 中Proxy扩展功能,更加安全
行为型模板模式豆浆制作Spring 中AbstractApplicationContext统一算法,代码复用过多不利于维护
~命令模式智能生活Spring 中JdbcTemplate解耦请求发起与执行复杂
~访问者模式测评系统解耦数据结构与操作违背迪米特、依赖倒转
~迭代器模式学校院系JDK 中ArrayList统一遍历过多不利于维护
~观察者模式天气预报JDK 中Observable动态添加三方
~中介者模式智能家庭封装交互复杂
~备忘录模式游戏角色状态恢复方便恢复状态占用资源,消耗内存
~解释器模式四则运算Spring 中SpelExpressionParser可扩展性调试复杂;效率低
~状态模式APP 抽奖借贷平台分离状态过多不利于维护
~策略模式鸭子JDK 中Comparator分离不变与变化过多不利于维护
~职责链模式采购审批SpringMVC 中HandlerExecutionChain分离请求与处理调试复杂;影响性能

整理难免有误,欢迎大家批评指正!
尚硅谷 Java 设计模式(图解 + 框架源码剖析)学习笔记

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
23设计模式java实现源码 此目录里包括了一书中所有23设计模式的实现(Java 版)源码 关于代码的几点说明: 1. 代码为根据个人对Design Pattern的学习理解写出(>90%原创), 难免有错误的地方,希望大家指出。 2. 每个Pattern均是一个目录,其目录名即是Pattern的名字, 所有代码用JDeveloper 9i 和JBuilder 6.0编写,并编译、运行通过。 3. 示例中的类,方法的命名规则和各个对象间的协作,基本同原书, 所以可以在看书的同时加以参照。 4. 为图方便,绝大多数示例的效果是用printf表现之。 虽然不能体现Pattern的威力,效果也不够直观,但希望依然能体现 Pattern的骨架,比如一个Pattern的类是如何组织的,各个对象间的协作又是怎样。 5. 所有代码是对Pattern做了相当的简化,有许多深层次的考虑希望大家一起挖掘。 6. 鉴于本人水平和时间也较紧张,代码写的比较烂,设计中考虑不周,效率不高 ,甚至错误的地方还请大家指出。 目录 Adapter .......\Adapter.jpr .......\classes .......\.......\Adapter.cdi .......\.......\connections.xml .......\.......\Shape.class .......\.......\Text.class .......\.......\TextShapeClass.class .......\.......\TextShapeObject.class .......\src .......\...\Shape.java .......\...\Text.java .......\...\TextShapeClass.java .......\...\TextShapeObject.java Bridge ......\Bridge.jpr ......\classes ......\.......\Bridge.cdi ......\.......\connections.xml ......\.......\Test.class ......\.......\Text.class ......\.......\TextBold.class ......\.......\TextImp.class ......\.......\TextImpLinux.class ......\.......\TextImpMac.class ......\.......\TextItalic.class ......\src ......\...\Test.java ......\...\Text.java ......\...\TextBold.java ......\...\TextImp.java ......\...\TextImpLinux.java ......\...\TextImpMac.java ......\...\TextItalic.java Builder .......\Builder.jpr .......\classes .......\.......\Builder.cdi .......\.......\ConcreteHouseBuilderA.class .......\.......\connections.xml .......\.......\House.class .......\.......\HouseBuilder.class .......\.......\HouseDirector.class .......\.......\TestClient.class .......\src .......\...\ConcreteHouseBuilderA.java .......\...\House.java .......\...\HouseBuilder.java .......\...\HouseDirector.java .......\...\TestClient.java ChainOfResponsibility .....................\ChainOfResponsibility.jpr .....................\classes .....................\.......\Chain.class .....................\.......\ChainOfResponsibility.cdi .....................\.......\connections.xml .....................\.......\Manager.class .....................\.......\Others.class .....................\.......\Programmer.class .....................\.......\ProjectManager.class .....................\.......\QA.class .....................\.......\Test.class .....................\src .....................\...\Chain.java .....................\...\Manager.java .....................\...\Others.java .....................\...\Programmer.java .....................\...\ProjectManager.java .....................\...\QA.java .....................\...\Test.java Command .......\classes .......\.......\Command.cdi .......\.......\Command.class .......\.......\connections.xml .......\.......\Fan.class .......\.......\FanOffCommand.class .......\.......\FanOnCommand.class .......\.......\Light.class .......\.......\LightOffCommand.class .......\.......\LightOnCommand.class .......\.......\Switch.class .......\.......\TestCommand.class .......\Command.java .......\Command.jpr .......\TestCommand.java Composite .........\classes .........\.......\Composite.cdi .........\.......\connections.xml .........\.......\Employee.class .........\.......\empTree.class .........\.......\JxFrame$1.class .........\.......\JxFrame.class .........\Composite.jpr .........\src .........\...\Employee.java .........\...\empTree.java .........\...\JxFrame.java Decorator
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值