二十三种设计模式
我想做阿信
这个作者很懒,什么都没留下…
展开
-
让GTA 5来告诉你什么是策略模式(Strategy)
目录了解策略模式让GTA 5给你展示策略模式咱们自己从代码上实现:鼻子策略族鼻子策略接口:大鼻子——鼻子具体策略1高鼻子——鼻子具体策略2小鼻子——鼻子具体策略3眉毛策略族眉毛策略接口:平直眉——眉毛具体策略1上挑眉——眉毛具体策略2一字眉——眉毛具体策略3眼睛策略族眼睛策略接口:黑眼睛——眼睛具体策略1蓝眼睛——眼睛具体策略2紫眼睛——眼睛具体策略3嘴策略族嘴策略接口:爱心唇——嘴具体策略1覆舟唇——嘴具体策略2.原创 2020-08-10 14:18:46 · 421 阅读 · 0 评论 -
唐三体会了什么叫做责任链模式(ChainOfResponsibility)
这种处理方式想斗罗大陆的主角遇见的事:泰隆想怼唐三,结果打不过。然后他的老子泰诺,出来找唐三,又被唐三击败后。再然后,泰诺的老子泰坦,又出来要解决唐三。。。。责任链,就是,请求解决不了,向上传递,直到解决。原创 2020-06-25 21:14:55 · 453 阅读 · 0 评论 -
备忘录模式(Memento)
目录定义UML类图角色职责案例案例UML类图代码优缺点优点缺点应用场景定义备忘录(Memento):在不破化封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个对象。这样以后就可以将该对象恢复到原先保存的状态。我们都知道,软件的运行,本质上就是数据的查询、运算、展示。当软件运行到某个时期,我们只需要,吧他各个属性和值保存一下,然后不管什么时候,制药再赋值回去,就能让软件进入备份时的状态。UML类图角色职责originator:对象(需要保存状态的对象)Memento:备忘录对象,原创 2020-06-25 15:45:56 · 220 阅读 · 1 评论 -
中介者模式(Mediator)
目录定义UML类图案例项目结构树状图代码定义中介者模式(Mediator),用一个中介者对象封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。其实,核心就是用一个类去管理一系列对象之间的交互。UML类图关于哪个Mediator这个抽象中介者类,有的资料里没有,有的资料里边有,有无应该影响不大。案例MVC就是运用了中介者模式,C是V和M的中介。项目结构树状图view和model的所有交互全交给了controler。代码具体原创 2020-06-24 18:53:17 · 189 阅读 · 0 评论 -
观察者模式(Observer)
目录定义UML类图小案例需求拍卖模式UML类图代码优缺点分析优点缺点使用场景定义观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新发自己。一个核心类,拥有其它类(观察者类)想要的信息,观察者类向核心类注册后,核心类的信息发生变化时,对订阅者进行广播,把更改的信息发给订阅者,或者通知订阅者来更新信息。UML类图小案例需求经常玩咸鱼和转转的垃圾佬,应该知道咸鱼和转转都支持拍卖。咱们模拟一下拍卖流程来原创 2020-06-24 16:20:42 · 233 阅读 · 0 评论 -
迭代器模式(Iterator)
目录原创 2020-06-22 20:52:07 · 176 阅读 · 0 评论 -
什么是享元模式(Flyweight)?我用Java模拟玩井字棋来告诉你!(Java版)
享元模式(Flyeight):运用共享技术有效的支持大量细颗粒度的对象。简单来说就是,共享对象、重复利用对象。分析一下数据库链接对象:每个链接的账号、密码、端口、地址等数据都是一样的。每次实例化链接对象时,都会把这些重复的信息再在内存里边生成。造成内存浪费。现在,咱们把这些共同的链接信息单独写个类,实例化好。每次新建连接时,都来此对象取走信息进行连接。相对来说,我们每次实例化连接时,占用的内存空间更少了。重复使用数据库连接信息对象,这里使用了享元模式。至于把所有的连接存到容器,动态生成是池的思想了原创 2020-06-14 18:30:25 · 269 阅读 · 0 评论 -
用eclipse的树状项目展示,告诉你什么是组合模式(composite)
比如我们eclipse中项目的展示图形就是典型的树状结构展示。只不过,这个树是朝右长的。边就用组合模式,模仿eclipse的项目展示效果,进行输出## 需求用java代码模仿eclipse项目树状的展示效果。并在控制台输出。运行结果model dao entity UserDAO.java inteface IUserDAO.java impl IUserDAOImpl.原创 2020-06-13 17:31:59 · 794 阅读 · 0 评论 -
桥接模式(Bridge)——一个把 n*m 的问题转化为 n+m 的问题
目录定义再理解案例UML类图代码运行结果总结定义桥接模式(Bridge),将抽象部分与它的实现部分分离,使它们都可以独立低变化。再理解我们可以把礼物从两个维度进行划分:给人的感觉、实物给人的感觉就是抽象的,实物就是实现部分。假如:礼物给人的感觉有:温暖的礼物、冷漠的礼物、狂野的礼物。。。总过6种礼物有:花、首饰两种。正常理解,一个礼物,给人一种感觉,应该是要写在一个类的,所以:按照正常来写,是:6*2=12个类但是,桥接模式,把抽象和实现分开了。给人的感觉和礼物分开了,然后进行组合。就原创 2020-06-09 22:01:45 · 368 阅读 · 0 评论 -
适配器模式(Adapter)
苹果的接口是扁平的,耳机的接口是圆的。显然不匹配。但是,只要买个转接头就可以连在一起了。电流就可以通过转接头从手机流到耳机,让耳机工作起来了。在编程中,有的接口是“扁平”的,但是我们只接受“圆”接口的数据,那肿么办?手撸一个“转接头”,把他们连接起来就可以了。数据就可以向电流一样,从“扁平”接口,流向“转接头”,再流向“圆”接口,让我们的调用端“工作”起来。原创 2020-06-09 16:35:38 · 415 阅读 · 0 评论 -
建造者模式(Builder)
目录定义四个角色定义建造者模式(builder),将一个复杂对象的构建与它的表示分离使得同样的构建过程可以创建不同的表示。四个角色Product(产品角色原创 2020-06-08 21:52:17 · 268 阅读 · 0 评论 -
外观模式(Facade)
相信大家对外观模式也有一定了解了,从编程的角度上来说,我们把所有的子系统,各种细节都写了出来,但是为了方便管理和调用,也为了其他人阅读维护方便,把一些方法的组合封装成一个“功能”。这就是外观模式!原创 2020-06-08 11:09:32 · 164 阅读 · 0 评论 -
单例模式(singleton)
目录单例模式(Singleton):实现原理:应用场景:实例:饿汉式饿汉第一式——静态变量输出结果:分析:优点:缺点:小结:饿汉第二式——静态代码块输出结果:分析:懒汉式懒汉第一式——判断单例对象为null输出结果:分析:优点:缺点:小结:懒汉第二式——同步方法输出结果:分析:优点:缺点:小结:懒汉第三式——同步代码块输出结果:分析:优点:缺点:小结:双重检查输出结果:分析:优点:缺点:小结:静态内部类输出结果:分析:优点:缺点:小结:静态内部类输出结果:分析:优点:缺点:小结:总结单例模式(Single原创 2020-06-07 10:52:42 · 279 阅读 · 0 评论 -
学习模板方法模式,让我想到了贝爷吃虫子
说总是模糊,做给你看更清晰!假设咱们来总结一下贝爷吃昆虫的节目,然后用模板方法模式做个小案例。我们来分析一下贝爷,吃昆虫的流程:抓虫子去头去内脏一口吞点评一波下边在咱们就按照这个模板来做个模板方法小案例原创 2020-06-05 16:21:28 · 203 阅读 · 1 评论 -
不来了解一下程序的CV大法吗?——原型模式(Prototype)
程序的CV大法就是原型模式。在我们写代码,重复率高的时候,应该经常运用CV大法。其中一种程序CV大法就是JDK里边专门为我们提供的方法——clone()。这是JDK里封装的用C写的方法,直接在硬盘里边复制。原创 2020-06-04 16:51:35 · 6080 阅读 · 0 评论 -
java开发,必须要懂的23种设计模式——代理模式(Cglib代理)
Cglib代理的使用步骤:1. 导入jar包2. 添加依赖3. 调用Enhancer的方法生成代理原创 2020-06-01 17:50:19 · 206 阅读 · 0 评论 -
java开发,必须要懂的23种设计模式——代理模式(动态JDK代理模式)
静态代理模式和动态代理模式(JDK代理)的实现原理是一样的。本质上都是实现共同的接口,然后去实现的代理模式。只不过,静态代理,是我们自己写好的代理类,动态代理是在内存中,动态的去创建了一个接口的代理类。原创 2020-06-01 10:36:58 · 177 阅读 · 0 评论 -
java开发,必须要懂的23种设计模式——代理模式(静态代理模式)
所以说,“代理”其实就是一种,通过另一个人实行你的销售功能,同时能够增强你的销路、降低你风险的一种商业行为。也就是说,在编程中,模仿这种商业模式,让另一个类去实行本类的功能,同时扩展功能、增加安全性的一种模式。原创 2020-05-31 15:45:01 · 271 阅读 · 0 评论 -
喂! 装饰模式(Decoraor) 说你呢! 禁止套娃!!!
了解装饰模式:我们来看一下“装饰”是什么意思:(截图来自百度汉语)就这个词,已经快解释清楚“装饰模式”是什么东西了。装饰模式:动态的将新功能附加到对象上。说实话,我感觉这种模式叫“养成模式”更合适。这是养成的解释:(截图来自百度汉语)所以,怎么去动态添加?我就,模拟养成养魔法鱼,做例子来讲一下。策略模式小案例:...原创 2020-05-28 22:20:09 · 265 阅读 · 1 评论 -
java开发,必须要懂的23种设计模式——工厂模式(工厂方法模式)
提醒:这篇文章是继java开发,必须要懂的23种设计模式——工厂模式(简单工厂模式)文章后,进阶版工厂模式的讲解,建议先浏览一下这篇文章,再继续看下去。了解之后,我们来说说怎么去让工厂模式去符合开闭原则!分析:我们通过简单工厂模式知道,不满足开闭原则的罪魁祸首,是工厂类里边的判断语句。只要增加了一个商品,就必须增加一个判断语句,以及相应的实例化和初始化代码,我们把代码写死了!那么,怎么把判断语句去掉?想去掉判断语句,我们得想一想:为什么需要判断语句?因为工厂生产了两件..原创 2020-05-26 08:04:42 · 350 阅读 · 0 评论 -
java开发,必须要懂的23种设计模式——工厂模式(简单工厂模式)
工厂模式是什么?讲解工厂模式之前,我们先来了解一下工厂是干什么的。简单来说,就是集中高效的生产产品。也就是说,在编程中,工厂模式,就是效仿工厂,进行集中、高效实例化对象。(实例化就是生产产品)工厂模式小案例...原创 2020-05-23 18:37:11 · 3769 阅读 · 13 评论