摘要: 设计模式是一个很重要的内容,接下来将逐步的介绍一下常用的23种设计模式及其它的一些设计模式,每一个设计模式都配有模板代码和简单测试用例方便理解,完整代码会逐步上传到码云中,链接放上:https://gitee.com/adamjiangwh/GoF。 本篇主要介绍一下设计模式的基本原则,并给出目录。 阅读全文
posted @ 2018-04-23 16:24 JAdam 阅读(5141) 评论(1) 推荐(6) 编辑
摘要: 从写Java系列的第一篇到现在已经三个月了,因为在网络上或书籍中没有见到一些很适合初学者的学习流程,所以下决心自己写一写,也当作回顾一下Java的知识。网上有许多Java教程之类的内容,都是从概念起步的,对于初学者来说,概念的重要性无可厚非,但拿我自己来说,有时概念太多就会对其产生反感。既然Java 阅读全文
posted @ 2018-04-17 18:31 JAdam 阅读(8039) 评论(1) 推荐(12) 编辑
摘要: 一、什么是迭代器模式 迭代器这个词在Java中出现过,即Java中使用Iterator迭代器对集合进行遍历,但迭代器模式算是一个没落的模式,基本上没人会单独写一个迭代器,除非是产品性质的开发。 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。U 阅读全文
posted @ 2019-06-14 17:05 JAdam 阅读(3098) 评论(1) 推荐(0) 编辑
摘要: 一、什么是备忘录模式 备忘录这个词汇大家应该都不陌生,我就经常使用备忘录来记录一些比较重要的或者容易遗忘的信息,与之相关的最常见的应用有许多,比如游戏存档,我们玩游戏的时候肯定有存档功能,旨在下一次登录游戏时可以从上次退出的地方继续游戏,或者对复活点进行存档,如果挂掉了则可以读取复活点的存档信息重新 阅读全文
posted @ 2019-06-13 17:52 JAdam 阅读(6958) 评论(3) 推荐(2) 编辑
摘要: 一、什么是策略模式 策略这个词应该怎么理解,打个比方说,我们出门的时候会选择不同的出行方式,比如骑自行车、坐公交、坐火车、坐飞机、坐火箭等等,这些出行方式,每一种都是一个策略。 再比如我们去逛商场,商场现在正在搞活动,有打折的、有满减的、有返利的等等,其实不管商场如何进行促销,说到底都是一些算法,这 阅读全文
posted @ 2019-06-12 17:39 JAdam 阅读(103432) 评论(3) 推荐(19) 编辑
摘要: 一、什么是访问者模式 访问者模式是一个相对比较简单,但结构又稍显复杂的模式,它讲的是表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。例如,你在朋友家做客,你是访问者,朋友接收你的访问,你通过朋友的描述,然后对朋友的描述做出一个判断,这就是访问 阅读全文
posted @ 2019-06-03 16:59 JAdam 阅读(14462) 评论(0) 推荐(1) 编辑
摘要: 一、什么是中介者模式 中介这个词并不陌生,就是房屋中介的那个“中介”,就是中间人的意思。比如MVC模式,C(Controller控制器)是M(Model模型)和V(View视图)的中介者,在前后端交互时起到了中间人的作用。 中介者模式(Mediator),用一个中介对象来封装一系列的对象交互。中介者 阅读全文
posted @ 2019-06-01 16:17 JAdam 阅读(8905) 评论(2) 推荐(2) 编辑
摘要: 一、什么是解释器模式 解释器这个名词想必大家都不会陌生,比如编译原理中,一个算术表达式通过词法分析器形成词法单元,而后这些词法单元再通过语法分析器构建语法分析树,最终形成一颗抽象的语法分析树。诸如此类的例子也有很多,比如编译器、正则表达式等等。 如果一种特定类型的问题发生的频率足够高,那么可能就值得 阅读全文
posted @ 2019-05-28 17:30 JAdam 阅读(15233) 评论(0) 推荐(2) 编辑
摘要: 一、什么是职责链模式 从文字角度出发,我们可以先将关注点放在“链”字上,很容易联想到链式结构,举个生活中常见的例子,击鼓传花游戏就是一个很典型的链式结构,所有人形成一条链,相互传递。而从另一个角度说,职责链就是所谓的多级结构,比如去医院开具病假条,普通医生只能开一天的证明,如果需要更多时常,则需将开 阅读全文
posted @ 2019-05-27 18:08 JAdam 阅读(8074) 评论(1) 推荐(2) 编辑
摘要: 一、什么是状态模式 状态这个词汇我们并不陌生,在日常生活中,不同时间就有不同的状态,早上起来精神饱满,中文想睡觉,下午又渐渐恢复,晚上可能精神更旺也可能耗费体力只想睡觉,这一天中就对应着不同的状态。或者对软件开发人员更形象的描述可能是UML的状态图(即用于描述一个实体基于事件反应的动态行为,显示了该 阅读全文
posted @ 2019-05-26 18:32 JAdam 阅读(13502) 评论(3) 推荐(0) 编辑
摘要: 一、什么是命令模式 在说命令模式前我们先来说一个小例子。很多人都有吃夜市的经历,对于那些推小车的摊位,通常只有老板一个人,既负责制作也负责收钱,我要两串烤串多放辣,旁边的人要了三串烤面筋不要辣,过了一会儿又来人要烤蔬菜……,当人多的时候记忆力不好的老板肯定就不知道谁要的啥、交没交钱了;而去有店铺的烤 阅读全文
posted @ 2019-05-25 17:21 JAdam 阅读(2511) 评论(2) 推荐(0) 编辑
摘要: 一、什么是模板方法模式 所谓模板方法模式,其实很简单,可以从模板的角度考虑,就是一个对模板的应用,就好比老师出试卷,每个人的试卷都是一样的,即都是从老师的原版试卷复印来的,这个原版试卷就是一个模板,可每个人写在试卷上的答案都是不一样的,这就是模板方法模式,是不是很好理解。它的主要用途在于将不变的行为 阅读全文
posted @ 2019-05-24 17:05 JAdam 阅读(9747) 评论(0) 推荐(2) 编辑
摘要: 一、什么是观察者模式 观察者一般可以看做是第三者,比如在学校上自习的时候,大家肯定都有过交头接耳、各种玩耍的经历,这时总会有一个“放风”的小伙伴,当老师即将出现时及时“通知”大家老师来了。再比如,拍卖会的时候,大家相互叫价,拍卖师会观察最高标价,然后通知给其它竞价者竞价,这就是一个观察者模式。 对于 阅读全文
posted @ 2019-05-23 18:24 JAdam 阅读(70073) 评论(2) 推荐(14) 编辑
摘要: 之前说了代理模式,即为其他对象提供一种代理以控制对这个对象的访问,详情见《简说设计模式——代理模式》,而代理模式常见的实现方式为静态代理及动态代理。 一、静态代理 所谓静态代理类是指:由程序员创建或由特定工具自动生成源代码,再对其进行编译。在程序运行之前,代理类的.class文件就已经存在了。UML 阅读全文
posted @ 2019-05-22 17:50 JAdam 阅读(2205) 评论(0) 推荐(2) 编辑
摘要: 最近写项目有用到html2canvas.js,可以实现页面的截图功能,但遭遇了许多的坑,特此写一篇随笔记录一下。 在使用html2canvas时可能会遇到诸如只能截取可视化界面、截图没有背景色、svg标签无法截取等问题,下面详细的说明一下。 一、导入html2canvas.js 这个不需要多说,可以 阅读全文
posted @ 2018-12-16 19:27 JAdam 阅读(23418) 评论(3) 推荐(3) 编辑
摘要: 之前写到了设计模式的代理模式,因为下一篇动态代理等内容需要用到反射的知识,所以在之前Java篇的基础上再写一篇有关反射的内容,还是以实际的程序为主,了解反射是做什么的、应该怎么用。 一、什么是反射 反射就是把Java类中的各个成分映射成一个个的Java对象。即在运行状态中,对于任意一个类,都能够知道 阅读全文
posted @ 2018-09-20 22:19 JAdam 阅读(88935) 评论(6) 推荐(7) 编辑
摘要: 一、什么是代理模式 关于代理模式,我们听到的见到的最多的可能就是静态代理、动态代理之类的,当然还有大家都知道的Spring Aop,这里我们先不谈这些个代理,先说个简单的例子。游戏代练应该都听说过,许多人肯定也找过代练,曾经DNF、LOL、COC等等游戏的代练很多,当然现在各类游戏层出不穷,也都有各 阅读全文
posted @ 2018-05-28 20:15 JAdam 阅读(6361) 评论(5) 推荐(3) 编辑