解释器模式(Interpreter)

用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计

实例:EL表达式,正则表达式,SQL语法,数学表达式
ps:尽量不要使用解释器模式,后期维护有很大麻烦。
在项目中,可使用Jruby,Groovy,java的js引擎替代解释器的作用,弥补java的不足。

访问者模式(Visitor)

对于存储在一个集合中的对象,可能具有不同的类型(即使有一个公共的接口),对于该集合中的对象
可以接收一类称为访问者的对象来访问,不同的访问者其访问方式也有所不同。

实例:XML文档解析器设计,编译器的设计,复杂集合对象的处理

策略模式(Strategy)

使得具体的算法和客户端进行分离,算法可以独立进行变化。
可以通过不同的配置文件,动态的建立不同的对象,切换不同的算法。
应用于解决某一个问题的一个算法族,允许用户任选一个算法解决某一问题。

组件:
Context:负责和策略进行交互
Strategy:抽象策略
ConcreteStrategy:具体策略

实例:GUI布局管理,Spring框架中Resource接口

UML:

模板方法模式(template method)

定义了一个操作中算法骨架,将某些步骤延迟到子类中实现。
新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。
一般直接使用匿名内部类实现某些方法,直接调用父类的启动方法。

核心:父类决定步骤,子类具体实现(钩子方法/方法回调)

实例:数据库访问封装,Junit单元测试,servlet中关于doGet/doPost

UML:

观察者模式(Observal)

用于1:N的通知

组件:
Subject/Objservable:目标对象,状态发生变化,持有一系列观察者对象
Observer:观察者对象,被告知目标状态改变
ps:JAVASE中java.util.Observable和java.util.Observer提供了方法来实现观察者模式

实例:广播机制,监听器,awt的事件处理

UML:

备忘录模式 memento

保存某个对象内部状态的拷贝,之后可将该对象恢复到原先的状态

组件:
Originator:源发器类,保存对象内部状态
Memento:备忘录类,存储拷贝
CareTaker:负责人类,存储备忘录
example:撤销,历史记录

UML:

GOF之行为型模式Ⅱ(重点)相关推荐

  1. GOF之创建型模式(重点)

    单例设计模式 作用:减少系统开销,优化资源共享访问 UML: 分类 1).饿汉式(不可延时加载) 可能造成资源浪费 枚举型:天然的单例设计模式(可防止反射和反序列化) enum EnumUnique ...

  2. GOF之行为型模式Ⅰ(重点)

    责任链模式(chain of responsbility) 职能:将能处理同一类请求的对象连接成一条线,所提交的请求沿链传递 组件: Handler:抽象处理类,声明处理方法 ConcreteHand ...

  3. GoF的23种设计模式之创建型模式的特点和分类

    创建型模式的主要关注点是"怎样创建对象?",它的主要特点是"将对象的创建与使用分离".这样可以降低系统的耦合度,使用者不需要关注对象的创建细节,对象的创建由相关 ...

  4. GoF设计模式(二)-行为型模式简介

    文章目录 复用决策与扩展决策的行为 由具体子类决定 Template 模板行为 由其他类的对象决定 Strategy 策略(库)行为 State 状态(机)行为 由具体子类决定与其他类的对象决定 Vi ...

  5. 设计模式之六个创建型模式的相关知识,简单易懂。

    一. 简单工厂模式-Simple Factory Pattern 1) 工厂三兄弟之简单工厂模式(一) 工厂模式是最常用的一类创建型设计模式,通常我们所说的工厂模式是指工厂方法模式,它也是使用频率最高 ...

  6. 备战面试日记(3.2) - (设计模式.23种设计模式之创建型模式)

    本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.6 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文章 ...

  7. 【设计模式】设计模式总结 ( 七大设计原则 | 创建型模式 | 结构型模式 | 行为型模式 ) ★★★

    文章目录 一.七大设计原则 1.开闭原则 2.依赖倒置原则 3.单一职责原则 4.接口隔离原则 5.迪米特原则 6.里氏替换原则 7.合成复用原则 二.创建型模式 0.简单工厂模式 ( 不属于 GOF ...

  8. 备战面试日记(3.4) - (设计模式.23种设计模式之行为型模式)

    本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.12 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文 ...

  9. 设计模式_行为型模式学习

    我们知道,创建型设计模式主要解决"对象的创建"问题,结构型设计模式主要解决"类或对象的组合或组装"问题,那行为型设计模式主要解决的就是"类或对象之间的 ...

最新文章

  1. 在Kubernetes集群上部署高可用Harbor镜像仓库
  2. vue组件中的样式属性:scoped,解决在父组件中无法修改子组件样式问题
  3. XGBoost输出特征重要性以及筛选特征
  4. Matlab:基于Matlab通过GUI实现自动驾驶的车牌智能识别
  5. php oop 实际工作,PHP OOP注意点(一)
  6. C#跨平台物联网通讯框架ServerSuperIO(SSIO)
  7. 利用FSMT进行文件服务器迁移及整合
  8. Netty ChannelOption 解释
  9. pytorch 关于显存增长原因以及显存占用优化
  10. python适用于什么系统_Python适合在什么系统
  11. 最佳的75个安全检测工具
  12. 通信标准2之PUSCH非动态传输 Configured Grant Type 1 和 Type 2
  13. Xorg屏幕旋转实现方式
  14. 阿里云企业实名认证教程
  15. 如何让同步/刷新的图标(el-icon-refresh)旋转起来
  16. 软件工程实践2018第六次作业——现场UML作图
  17. ThinkPad T410i 2516A21 升級手札(換SSD固態硬碟、I7 CPU、開機20秒)
  18. 〖Python自动化办公篇⑬〗- Excel 文件自动化 - 写入 excel 数据(xlsxwriter)
  19. 优格筑家 引领高档家装!
  20. 最早walkman android,首款Walkman血统安卓手机 索爱E16i评测

热门文章

  1. SQL-连接查询:left join,right join,inner join,full join之间的区别
  2. Pipe——高性能IO(二)
  3. 【Python爬虫】网络爬虫的“盗亦有道”
  4. C#LeetCode刷题之#705-设计哈希集合​​​​​​​(Design HashSet)
  5. C#LeetCode刷题之#643-子数组最大平均数 I( Maximum Average Subarray I)
  6. inode索引节点---初识
  7. nodejs 实践项目_NodeJS:最佳生产实践
  8. CSS单位之战:EM与。 REMs ...打架! ?
  9. Python中匿名函数与内置高阶函数详解
  10. Python键鼠操作自动化库PyAutoGUI简介