设计模式-入门指南
介绍常用的十三种设计模式,及应用场景
我爱看明朝
这个作者很懒,什么都没留下…
展开
-
观察者模式:spring的事件监听
之前,我在设计模式专栏里写过观察者模式,感兴趣的同学,可以去看看。spring为我们提供了事件监听机制,可以帮助我们解耦代码。原创 2022-12-30 17:28:54 · 161 阅读 · 0 评论 -
设计模式-工厂模式
工厂模式: 简单工厂模式工厂方法模式抽象工厂模式工厂模式属于设计模式的创建型 设计模式。 一般分为: 产品类 工厂类一. 简单工厂模式 (是工厂方法的一种特例) 二. 工厂方法模式产品类: abstract class Animal{ abstract void run();}class Dog extends Animal{ void run(){原创 2017-03-17 10:53:16 · 18135 阅读 · 0 评论 -
设计模式--责任链模式
设计模式–责任链模式当我们需要连续链式的进行处理数据时:你可以理解为接力赛,接力棒就是我们处理的数据,队员就是就是不同的处理器(mybaitis就是自定义插件)责任链中的角色责任链模式中有两个角色: 处理者、调度者调度者:负责责任在处理这之间的传播处理者:只负责处理自己的逻辑,保持单一原则要点: 各个处理器要符合单一原则,关注自己的逻辑就行,任务的传播交给调度这就Ok了应用mybaits的插件机制servlet中filter机制工作流、管道流、各种类型的审批责任链实现/**原创 2021-06-18 20:11:45 · 204 阅读 · 0 评论 -
设计模式扫盲篇
什么是设计模式?设计模式是前人通过大量的代码总结出来的 ‘编码套路’,是通过大量问题总结出来的解决方案。 使用设计模式可以设计出 松耦合,高内聚的代码。 设计模式可以使我们的代码更加灵活,更加有生命力。 设计模式是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。 设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。设计模式能使不稳定依原创 2017-11-14 22:30:30 · 18843 阅读 · 0 评论 -
设计模式--策略模式
策略模式场景小张,刚刚参加工作,就职于一家游戏公司,公司正在做一款动作游戏,隔壁的老王(没错就是隔壁王叔叔^_^)负责带小张,老王交代小张实现一个功能:游戏角色可以切换手上的武器对其其他角色进行攻击。小张的实现小张,想这不是很简单的是事情吗!小张,很快就设计出了角色可以根据武器进行攻击。 /** * *角色 **/ class User(){ pr原创 2017-11-16 22:46:02 · 18482 阅读 · 0 评论 -
设计模式--观察者模式
观察者模式场景自从小张上次使用了策略模式,游戏增加了很多武器营收显著增加。产品部门计划增加游戏中用户之间的互动。如果用户关注了另一个用户,被关注用户有新的游戏动态,关注者会及时收到消息。由于小张上次表现的不错,老王准备继续把这个重任交给小张。小张的需求理解这个需求,本质就是被关注者的最新动态要及时发送给关注者。小张仔细思考,发现这个需求和现实生活中订阅报纸的场景很相像。现实生活中的订阅报纸订阅报纸流原创 2017-11-18 13:18:11 · 18229 阅读 · 0 评论 -
设计模式--装饰者模式
装饰者模式场景小张的朋友小李在星巴滋(是的,和星巴克一样是卖饮料的,咖啡,茶),准备更新他们订单系统,小李找小张帮忙设计一下,订单系统里有:咖啡,茶,还有可以加的佐料:牛奶,糖,摩卡,柠檬……. 并且咖啡可以加佐料,并且可以加多份佐料。小张的需求分析如果直接设计,那么只要穷尽小李他们的咖啡,茶,和佐料的混合,建立对象就可以了,但是穷尽下来,类已经很多了,如果再有新的饮料和佐料加入,那么类的数量太原创 2017-11-21 23:40:04 · 18068 阅读 · 0 评论 -
设计模式--简单工厂,工厂方法,抽象工厂
工厂模式– 简单工厂,工厂方法,抽象工厂场景小张所在公司的游戏,最近很火,但是对于新手玩家太容易被老手打死,所以产品准备新增一个练习模式,给新手来练习,在练习模式下需要产生很多机器人给新手练习,机器人有很多不同的等级不同的等级对玩家的伤害的不同。这次的需求当仁不让的给了小张,毕竟之前的几次小张做的很不错。小张的需求分析练习模式下有很多小兵,当用户进入练习模式,需要产生许多不同等级的小兵。并且根据用户原创 2017-11-22 23:46:47 · 18084 阅读 · 0 评论 -
设计模式--单例模式
单例模式: 1. 饿汉式 2. 懒汉式单例模式属于 设计模式的 创建型模式 1.普通实例类:class Apple{ public void Apple(){ system.out.printf("This is apple instance"); } public void eat(){ system.out.printf("Appl原创 2017-03-17 17:40:12 · 17954 阅读 · 0 评论 -
设计模式--命令模式
命令模式场景小张的公司最近接到一个新的项目,要做一个遥控器。 有七个插槽,用来控制电灯,电视,主卧门….的打开与关闭并缺有一个undo 撤销按钮 能够退回上一次的操作。电灯,电视的对象已经提供了。小张的需求理解小张看了遥控器的原型图和电灯…的类图觉得这个需求很好做,每个插槽存放各自的对象Light,Tv,….然后按钮调用具体的方法。小张的简单实现原创 2018-01-16 23:02:25 · 18319 阅读 · 0 评论 -
设计模式-- 适配器模式
设计模式– 适配器模式场景小张公司今年效益不过,部门组织了年度旅游,第一次出国的小张,跟着大家去了欧洲。住进酒店后准备给手机充电,发现带来的插头插不进去欧洲酒店的插座,尝试很很久也不行。此时同住一间房的老王(隔壁老王……^ _ ^)给手机充电去插头上插了一个转接头,一下就可以充电。小张此时献媚的看象老王。王哥,你这还有多余的没? “可以把我的借给你,但是你得回答我一个问题原创 2018-02-07 20:50:14 · 18424 阅读 · 0 评论 -
设计模式 - 模版方法
设计模式 - 模版方法场景小张的团队最近接受一个需求,实现实现一家咖啡店的冲泡咖啡和茶的冲泡自动化。之前这家咖啡店都是由咖啡师傅手动进行调制咖啡和茶。现在咖啡店需要引入自动化的点单和调制饮料的系统,小张负责实现调制饮料的功能。咖啡师傅手工冲泡咖啡和茶的流程:冲泡咖啡:把水煮沸用沸水冲泡咖啡把咖啡倒入杯子加糖和牛奶冲泡茶:把水煮沸用沸水冲泡茶叶把茶倒入...原创 2018-02-08 04:07:41 · 23975 阅读 · 16 评论 -
设计模式- 迭代器模式
设计模式 - 迭代器模式场景小张的朋友开了一家酒店,最近新收购了一家庭旅馆。需要对自己酒店的房间和家庭旅馆的房间进行统一管理,但是两家之间都有各自的实现存储房间,酒店使用的是list,而家庭旅馆使用的是数组,现在收购后想统一管理,但是由于两家的系统不一样,并且一直在生产,现在小张的朋友想统一管理两家的房间使客户能够统一进行订房。朋友找到了小张,让小张帮忙看看,如何处理。场景分析...原创 2018-02-08 17:14:43 · 18424 阅读 · 0 评论 -
设计模式 - 代理模式
设计模式 - 代理模式场景小张接到一个需要,需要对用户的增删改查每次操作都进行行安全检查,防止不安全的操作破坏用户的敏感信息。小张之前听说过面向切面编程(aop),而这个需求很贴合面向切面编程,首先肯定不能在用户管理类(userManagerImpl)里增加代码,这会破坏和并且增加了用户管理类的复杂度。可以这样理解切面,我们的每个操作线程都是一个水管,我们之前写代码都是在一个...原创 2018-02-09 20:39:47 · 18345 阅读 · 0 评论 -
设计模式 - 外观模式
设计模式 - 外观模式场景小张搬家了,新的房间都是智能化,但是每个设备都是独立的,小张每次回家之前需要打开app分别打开每个设备,例如小张回家后的基本操作是开门,打开电灯,把书从书架拿下来放到桌子上然后自动翻到昨日读到页码。这三个三个操作,小张需要分别操作三次,作为程序员小张觉得这个太不自动化了。他想把这三个变成一件事情而不是三件事。小张想自己应该封装一下,把三个步骤变成一个操作。...原创 2018-02-09 01:05:40 · 18397 阅读 · 0 评论