模策则迭名装备中介装房-行为模式
模板模式:定义一个算法结构,而将一些步骤延迟到子类实现。
例子:留学生 每个国家的留学生制度不一样,但是还是会有一些是一样的,将一样的抽象出来然后将不一样的进行抽象,最后进行抽象实现;
策略模式:定义一系列算法,把他们封装起来,并且使它们可以相互替换。
组成抽象策略类,具体策略类,环境(持有策略类的引用提供给客户端调用);
例子:清蒸大闸蟹和红烧大闸蟹;先定义大闸蟹的接口然后定实现接口的多个方法
最后第一个调用者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种设计模式全面解析(超级详细)