设计模式详解

模策则迭名装备中介装房-行为模式 模板模式:定义一个算法结构,而将一些步骤延迟到子类实现。 例子:留学生 每个国家的留学生制度不一样,但是还是会有一些是一样的,将一样的抽象出来然后将不一样的进行抽象,最后进行抽象实现; 策略模式:定义一系列算法,

模策则迭名装备中介装房-行为模式

模板模式:定义一个算法结构,而将一些步骤延迟到子类实现。

例子:留学生 每个国家的留学生制度不一样,但是还是会有一些是一样的,将一样的抽象出来然后将不一样的进行抽象,最后进行抽象实现;

策略模式:定义一系列算法,把他们封装起来,并且使它们可以相互替换。

组成抽象策略类,具体策略类,环境(持有策略类的引用提供给客户端调用);

例子:清蒸大闸蟹和红烧大闸蟹;先定义大闸蟹的接口然后定实现接口的多个方法

最后第一个调用者context,最后定义客户端有客户端进行调用;

责任链模式:将请求的发送者和接收者解耦,使的多个对象都有处理这个请求的机会。

组成:抽象处理者,具体处理者,客户类

例子:请假,有请假人发起,后由领导审批,通过请假的情况一天两天或者多天的情况

经由不同的领导审批;

迭代模式:一种遍历访问聚合对象中各个元素的方法,不暴露该对象的内部结构。

组成:

1、Iterator抽象迭代器,提供遍历容器元素的接口,比如next()、hasNext()、remove()等

2、ConcreteIterator具体的迭代器,完成容器的遍历。

3、Aggregate抽象容器,提供一个创建迭代器的方法

4、ConcreteIterator具体的容器,实现抽象容器,创建出容器迭代器的对象

命令模式:将命令请求封装为一个对象,使得可以用不同的请求来进行参数化。

组成:

1抽象命令类

2具体命令类

3实现者

4调用者

例子:早餐,厨师,服务员,具体早餐;

命令模式可以和备忘录模式组合,进行撤销功能操作;

状态模式:允许一个对象在其对象内部状态改变时改变它的行为。

组成:环境类,抽象状态类,具体状态类;

例子:用“状态模式”设计一个学生成绩的状态转换程序。

备忘录模式:在不破坏封装的前提下,保持对象的内部状态。

组成:原发器,备忘录,负责人;

例子:各个分数的等级状态

中介模式:用一个中介对象来封装一系列的对象交互。

组成:1抽象中介者,2具体中介者,3抽象同事类,4具体同事类;

例子:中介卖房

解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器。

组成:抽象表达式,终结符表达式,非终结符表达式,环境,客户端。

一、非终结符:

1、非终结符可以再分成更细的东西。

2、不是终结符的都是非终结符。非终结符可理解为一个可拆分元素,而终结符是不可拆分的最小元素。终结符号就是语言中用到的基本元素,名词、动词、形容词、助词等等基本语言单位。

二、终结符:

1、终结符直接就代表一个意思,比如关键字if就不能再分成i和f了。

2、通俗的说就是不能单独出现在推导式左边的符号,也就是说终结符不能再进行推导。非终结符则是"语法"中用到的元素,除非谈论"语法",一般交谈语言中并不会用到非终结符。比如:主语、短语、词组、句子。

例子:解释公交车中的乘车人免费的情况

总结一下:

1先思考是先有解释器还是先有环境类,解释器用来解释什么;

2解释公交车乘车人的收费情况;

3收费方法应该在哪里?在环境类中,环境类中的方法有收费规则和需要解释的收费数据

4非环境类的话需要怎么处理:

5终结符表达式:用来存储环境类的初始化中的数据,哪些数据是需要用终结符表达式处理

6非终结符表达式:用来解释是否符合环境类中的方法;

观察者模式:对象间的一对多的依赖关系。

访问器模式:在不改变数据结构的前提下,增加作用于一组对象元素的新功能。

组成:1抽象访问者;

2具体访问者

3具体元素

4对象结构

外代装箱,组石桥

外观模式:对外提供一个统一的方法,来访问子系统中的一群接口

组成:1外观

2子系统

3客户

例子:

代理模式:为其他对象提供一个代理以便控制这个对象的访问。

组成:抽象主题,真实主题,代理

例子:婺源特产公司

装饰器模式:动态的给对象添加新的功能。

组成:抽象构件,具体构建,抽象装饰,具体装饰

例子:

组合模式:将对象组合成树形结构以表示“”部分-整体“”的层次结构

适配器模式:

桥接模式:

工原建

工厂模式:

原型模式:

建造者模式:

参考地址:JAVA设计模式总结之23种设计模式 - pony1223 - 博客园

Java设计模式:23种设计模式全面解析(超级详细)

知秋君
上一篇 2024-08-12 17:48
下一篇 2024-08-12 17:12

相关推荐