大牛分享的几种设计模式及知识要点(完)
一、会见者模式(Visitor Pattern )界说:Represent an operation to be performed on the elements of an objectstructure. Visitor lets you define a new operation without changing the classes ofthe elements on which it operates. (封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下界说作用于这些元素的新的操作。)● Visitor——抽象会见者抽象类或者接口,声明会见者可以会见哪些元素,详细到法式中就是 visit 方法的参数界说哪些工具是可以被会见的。● ConcreteVisitor——详细会见者它影响会见者会见到一个类后该怎么干,要做什么事情。
● Element——抽象元素接口或者抽象类,声明接受哪一类会见者会见,法式上是通过 accept 方法中的参数来界说的。● ConcreteElement——详细元素实现 accept 方法,通常是 visitor.visit(this),基本上都形成了一种模式了。
● ObjectStruture——结构工具元素发生者,一般容纳在多个差别类、差别接口的容器,如 List、Set、Map 等,在项目中,一般很少抽象出这个角色。使用场景:● 一个工具结构包罗许多类工具,它们有差别的接口,而你想对这些工具实施一些依赖于其详细类的操作,也就说是用迭代器模式已经不能胜任的情景。● 需要对一个工具结构中的工具举行许多差别而且不相关的操作,而你想制止让这些操作“污染”这些工具的类。二、状态模式(庞大)界说:Allow an object to alter its behavior when its internal state changes.Theobject will appear to change its class.(当一个工具内在状态改变时允许其改变行为,这个工具看起来像改变了其类。
)● State——抽象状态角色接口或抽象类,卖力工具状态界说,而且封装情况角色以实现状态切换。● ConcreteState——详细状态角色每一个详细状态必须完成两个职责:本状态的行为治理以及趋向状态处置惩罚,通俗地说,就是本状态下要做的事情,以及本状态如何过渡到其他状态。● Context——情况角色界说客户端需要的接口,而且卖力详细状态的切换。
使用场景:● 行为随状态改变而改变的场景这也是状态模式的基础出发点,例如权限设计,人员的状态差别纵然执行相同的行为效果也会差别,在这种情况下需要思量使用状态模式。● 条件、分支判断语句的替代者注意:状态模式适用于当某个工具在它的状态发生改变时,它的行为也随着发生比力大的变化,也就是说在行为受状态约束的情况下可以使用状态模式,而且使用时工具的状态最好不要凌驾 5 个。
三、解释器模式(Interpreter Pattern )(少用)界说:Given a language, define a representation for its grammar along with aninterpreter that uses the representation to interpret sentences in the language.(给定一门语言,界说它的文法的一种表现,并界说一个解释器,该解释器使用该表现来解释语言中的句子。)● AbstractExpression——抽象解释器详细的解释任务由各个实现类完成,详细的解释器划分由 TerminalExpression 和Non-terminalExpression 完成。● TerminalExpression——终结符表达式实现与文法中的元素相关联的解释操作,通常一个解释器模式中只有一个终结符表达式,但有多个实例,对应差别的终结符。
详细到我们例子就是 VarExpression类,表达式中的每个终结符都在栈中发生了一个 VarExpression 工具。● NonterminalExpression——非终结符表达式文法中的每条规则对应于一个非终结表达式,详细到我们的例子就是加减法例则划分对应到 AddExpression 和 SubExpression 两个类。
非终结符表达式凭据逻辑的庞大水平而增加,原则上每个文法例则都对应一个非终结符表达式。● Context——情况角色详细到我们的例子中是接纳 HashMap 取代。
使用场景:● 重复发生的问题可以使用解释器模式● 一个简朴语法需要解释的场景注意:只管不要在重要的模块中使用解释器模式,否则维护会是一个很大的问题。在项目中可以使用 shell、JRuby、Groovy 等剧本语言来取代解释器模式,弥补 Java 编译型语言的不足。
四、享元模式(Flyweight Pattern )界说:Use sharing to support large numbers of fine-grained objects efficiently.(使用共享工具可有效地支持大量的细粒度的工具。)工具的信息分为两个部门:内部状态(intrinsic)与外部状态(extrinsic)。● 内部状态内部状态是工具可共享出来的信息,存储在享元工具内部而且不会随情况改变而改变。
● 外部状。
本文关键词:kaiyun,大牛,分享,的,几种,设计模式,及,知识,要点,完
本文来源:kaiyun-www.nh-bj.cn
同类文章排行
- 2021年多晶硅市场价值将达89亿美元
- kaiyun|注意!2019年度医保缴费时间要停止啦!
- 山西29家化工企业涂上“环保色”
- 【整形新税】海南瑞韩整形副院长刘申松的眼部面部轮廓手术
- kaiyun_河北衡水警方:严惩瞒报重点地区旅行史等违法犯罪行为
- 地铁站名还是采用传统地名为佳_kaiyun
- 甘肃金昌化工产业实现循环经济生产
- 全面禁烟,任重而道远
- 油价高企对石化企业的影响和对策
- 年终总结要“写实”
最新资讯文章
- 大牛分享的几种设计模式及知识要点(完)
- 老人“承包”KTV下午场,没动任何人的奶酪
- 面部吸脂针眼位置跟吸脂部位很重要
- 每个人都有不同的面部年轻化驻容术
- 武汉石化三项举措保装置平稳运行
- (05月17日)神华煤化工闹剧
- 【kaiyun】人的三种属性
- kaiyun: 与时俱进!“二维码”“粉丝”等词收进新版《新华字典
- 住民养老保险缴费档次怎么选 哪个划算?_kaiyun
- 建立阶梯气价制度基数核准是关键|kaiyun
- 终结加班文化离不开监管发力【kaiyun】
- 据报道 俄罗斯人受欢迎整形手术为隆胸、提升及鼻子整形
- 婚前SOS,这些医美项目是否真的靠谱
- 河北沧州力争打造*塑料薄膜基地
- 广州石化全力打造无异味罐区
- 187国签署"限制塑料废物贸易"协定美国未加入:kaiyun
- kaiyun_河北衡水警方:严惩瞒报重点地区旅行史等违法犯罪行为
- 读懂“大妈涉黑团”的生意经“kaiyun”
- 你也可以开一家美容院,实现百分百盈利,百分百拥有自己的事
- 韩男子借整形韩流东风 借机在中国当地非法行医被起诉判刑