上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 81 下一页
摘要: 工厂模式分为简单工厂、工厂方法和抽象工厂,主要用于将复杂对象的创建抽象到一个专门的工厂类中,从而将对象的使用和构建解耦。 我们以一个配置解析的例子来说明一下工厂模式。 比如在java项目中,我们会把一些不经常改变的配置信息(比如数据库连接等),写入配置文件,而配置文件有很多类型,比如json、xml 阅读全文
posted @ 2022-02-01 13:37 Mars.wang 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 构建者模式不难理解,实现起来也很简单。难点在于使用场景。 它一般适用于业务逻辑比较复杂的类,比如jdbc有很多参数,有一些是必填的,比如host、port、user、password,其他的则是可选参数。 如果按照正常的构造方法,参数可能会爆炸。而采用构造者模式,就会使得这个类的构建变得非常简单。 阅读全文
posted @ 2022-02-01 10:07 Mars.wang 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 在实际的软件开发中,状态模式不是很常用,但在一些能够用到的场景里,能发挥非常大的作用。 状态模式一般用于实现状态机,而状态机一般用在游戏、工作流引擎等软件开发中。 状态机有三个组成部分:状态、事件和动作。触发某个事件可以改变对象的状态。 以超级马里奥这个小游戏为例,一进入游戏是个小马里奥,吃到蘑菇就 阅读全文
posted @ 2022-01-31 16:05 Mars.wang 阅读(2118) 评论(0) 推荐(0) 编辑
摘要: 策略模式是指根据不同的对象,来采取不同的策略,其实这种场景非常场景。 促销活动中的打折就是最常见的一张。我们会根据这个客户的类型、或者他参与的活动的类型,或者是购物金额的不同采用不同的打折策略。 首先我们定义一个策略接口类 public interface Strategy { Double dis 阅读全文
posted @ 2022-01-25 17:12 Mars.wang 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 命令模式将请求封装成一系列对象,对象里包含指令和数据。 在分布式架构中,master需要给worker分发任务,worker完成后需要把任务处理结果返回给master。 master/worker之间的信息交互会有很多不同的指令和数据,这种不同消息的实现就可以采用命令模式。 我们首先定义一个命令对象 阅读全文
posted @ 2022-01-25 13:48 Mars.wang 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 备忘录模式又叫快照模式,既在不改变原对象的情况下,保存一系列它的快照,可以实现备份、撤销等操作。 InputText就是原对象,SnapShot是他的快照,SnapShotHolder负责保存一系列快照 public class InputText { private StringBuilder t 阅读全文
posted @ 2022-01-25 13:46 Mars.wang 阅读(51) 评论(0) 推荐(0) 编辑
摘要: callback不在23中设计模式之中,但我觉得它和设计模式一样重要。 大家都知道异步IO比同步IO性能更好,唯一的问题就是异步IO不能马上获得返回结果。 一般通过一个callback来获取返回值。我们通过一个简单的异步IO例子,来理解下callback的应用。 首先我们实现一个客户端,它负责发送消 阅读全文
posted @ 2022-01-25 11:17 Mars.wang 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 在设计模式中模板方法其实挺好理解的,它将多个类中共同的逻辑抽象成一个模板方法,放在父类之中。 然后把实际场景中不确定的部分写成一个抽象方法,具体逻辑由子类实现,当然实际执行的时候模板方法调用的是子类中重新实现的方法。 这样就给父类中的模板方法实现了复用,而同时又给子类留下了扩展点。 模板方法的应用很 阅读全文
posted @ 2022-01-25 09:55 Mars.wang 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 解释器模式听起来很复杂,但应用范围很小众,只会在一些特定领域才会用到,比如编译器、规则引擎,正则表达式。 正好我在项目中用到了这个功能。作为例子总结一下。 我的项目中实现了一个API注册的功能,简单来说就是用户通过注册一个数据源和一个SQL,我给他返回一个API接口。 本身逻辑并不复杂,但因为很多指 阅读全文
posted @ 2022-01-24 16:34 Mars.wang 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 一、加载简单java对象 编写一个类,不依赖任何其他jar,如下 package cc.eslink.bigscreen.controller.config; /** * @Author : wangbin * @Date : 2022/1/21 11:29 * @Description: */ p 阅读全文
posted @ 2022-01-21 14:32 Mars.wang 阅读(62) 评论(0) 推荐(0) 编辑
上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 81 下一页