java设计模式
文章平均质量分 62
CV大魔王
再微小的光也是光,再平凡的人也有他们人生当中的高光时刻,记录学习的一点一滴,相信美好的事情即将发生。
展开
-
java设计模式系列18——备忘录设计模式(快照模式)
备忘录设计模式在不破坏封闭的前提下,捕获一个对象的内部状态,保存对象的某个状态,以便在适当的时候恢复对象,又叫做快照模式,属于行为模式备忘录模式实现的方式需要保证被保存的对象状态不能被对象从外部访问,应用场景玩游戏的时候肯定有存档功能,下一次登录游戏时可以从上次退出的地方继续游戏棋盘类游戏的悔棋、数据库事务回滚需要记录一个对象的内部状态时,为了允许用户取消不确定或者错误的操作,能够恢复到原先的状态提供一个可回滚的操作,如ctrl+z、浏览器回退按钮角色Originator: 发起者,转载 2021-07-16 10:00:06 · 520 阅读 · 0 评论 -
java设计模式系列17——迭代器设计模式
迭代器设计模式提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部实现,属于行为型模式应该是java中应用最多的设计模式之一提到迭代器,想到它是与集合相关的,集合也叫容器,可以将集合看成是一个可以包容对象的容器,例如List,Set,Map,甚至数组都可以叫做集合,迭代器的作用就是把容器中的对象一个一个地遍历出来应用场景一般来说,迭代器模式是与集合是共存的,只要实现一个集合,就需要同时提供这个集合的迭代器,就像java中的Collection,List、Set、Map等 都有自原创 2021-07-16 09:26:17 · 100 阅读 · 0 评论 -
java设计模式系列16——责任链设计模式
责任链设计模式客户端发出一个请求,链上的对象都有机会来处理这一请求,而客户端不需要知道谁是具体的处理对象让多个对象都有机会处理请求,避免请求的发送者和接收者之间的耦合关系,将这个对象连成一条调用链,并沿着这条链传递该请求,直到有一个对象处理它才终止有两个核心行为:一是处理请求,二是将请求传递到下一节点应用场景Apache Tomcat 对 Encoding 编码处理的处理,SpringBoot 里面的拦截器、过滤器链在请求处理者不明确的情况下向多个对象中的一个提交请求如果有多个对象可以处原创 2021-07-15 17:24:10 · 151 阅读 · 0 评论 -
java设计模式系列15——观察者设计模式
观察者设计模式定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新,也叫做发布订阅模式Publish/Subscribe,属于行为型模式应用场景消息通知里面:邮件通知、广播通知、微信朋友圈、微博私信等,就是监听观察事件当一个对象的改变需要同时改变其它对象,且它不知道具体有多少对象有待改变的时候,考虑使用观察者模式角色Subject主题:持有多个观察者对象的引用,抽象主题提供了一个接口可以增加和删除观察者对象;有一个观察者数组,并原创 2021-07-14 16:03:51 · 99 阅读 · 0 评论 -
java设计模式系列14——模板方法模式
模板方法设计模式定义一个操作中的算法骨架,将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤,属于行为型模式应用场景javaweb里面的Servlet,HttpService类提供了一个service()方法,有多个子类共有逻辑相同的方法,可以考虑作为模板方法设计一个系统时知道了算法所需的关键步骤,且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,可以延迟到子类进行完成代码理解:public abstract class AbstractCl原创 2021-07-14 15:18:43 · 116 阅读 · 0 评论 -
java设计模式系列13—— 策略设计模式
策略设计模式定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换淘宝天猫双十一,正在搞活动有打折的、有满减的、有返利的等等,这些算法只是一种策略,并且是随时都可能互相替换的, 我们就可以定义一组算法,将每个算法都封装起来,并且使它们之间可以互换应用场景老王计划外出旅游,选择骑自行车、坐汽车、飞机等,每一种旅行方式都是一个策略如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么可以使用策略模式不希望暴露复杂的、与算法有关的数据结构,那么可以使用策略模式来封装算法角色原创 2021-07-13 20:24:00 · 138 阅读 · 0 评论 -
java设计模式系列12—— 享元设计模式
享元设计模式属于结构型模式,主要用于减少创建对象的数量,以减少内存占用和提高性能, 它提供了减少对象数量从而改善应用所需的对象结构的方式。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象应用场景JAVA 中的 String,如果字符串常量池里有则返回,如果没有则创建一个字符串保存在字符串常量池里面数据库连接池、线程池等如果系统有大量相似对象,或者需要用需要缓冲池的时候可以使用享元设计模式,也就是大家说的池化技术如果发现某个对象的生成了大量细粒度的实例,并且这些实例除了几原创 2021-07-13 18:08:16 · 73 阅读 · 0 评论 -
java设计模式系列11—— 外观设计模式
外观设计模式门面模式,隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口定义了一个高层接口,这个接口使得这系统更加容易使用应用场景在外人看来,李姐是负责消息推送这个工作,看起来很轻松,但他们不知道里面有多复杂,李姐加班多久才输出一个统一的接口,只要轻松操作就可以完成复杂的事情开发里面MVC三层架构,在数据访问层和业务逻辑层、业务逻辑层和表示层的层与层之间使用interface接口进行交互,不用担心内部逻辑,降低耦合性各种第三方SDK大多会使用外观模式,通过一个外观类,也就是整个系统原创 2021-07-13 16:53:36 · 99 阅读 · 0 评论 -
java设计模式系列10—— 代理设计模式
代理设计模式业务需求雷军想开一个数码小卖部,为以后退休生活做准备,代理各大厂商的手机和电脑,用代理设计模式帮他实现下Subject 卖手机RealProject 苹果、华为厂商,核心是卖手机,但是选址不熟悉Proxy 雷神数码专卖店:代理卖手机,附加选地址,增加广告等编码实现抽取公共方法public interface DigitalSell { void sell();}真实的对象(未被增强的对象)/** * 真实对象 * @author cv大魔王 * @ver原创 2021-07-13 16:31:33 · 78 阅读 · 0 评论 -
java设计模式系列9—— 装饰器设计模式
装饰器设计模式也叫包装设计模式,属于结构型模式,它是作为现有的类的一个包装,允许向一个现有的对象添加新的功能,同时又不改变其结构给对象增加功能,一般两种方式 继承或关联组合,将一个类的对象嵌入另一个对象中,由另一个对象来决定是否调用嵌入对象的行为来增强功能,这个就是装饰器模式,比继承模式更加灵活。角色(装饰者和被装饰者有相同的超类(Component))抽象组件(Component)定义装饰方法的规范,最初的自行车,仅仅定义了自行车的API;被装饰者(ConcreteComponent)原创 2021-07-13 14:38:10 · 139 阅读 · 0 评论 -
java设计模式系列8——组合设计模式
组合设计模式又叫部分整体模式,将对象组合成树形结构以表示“部分-整体”的层次结构,可以更好的实现管理操作组合模式使得用户可以使用一致的方法操作单个对象和组合对象部分-整体对象的基本操作多数是一样的,但是应该还会有不一样的地方核心:组合模式可以使用一棵树来表示应用场景银行总行,总行有前台、后勤、网络部门等,辖区下还有地方分行,也有前台、后勤、网络部门,最小的分行就没有子分行了公司也是,总公司下有子公司,每个公司大部分的部门都类似文件夹和文件,都有增加、删除等api,也有层级管理关系当想原创 2021-07-13 12:55:02 · 105 阅读 · 0 评论 -
java设计模式系列7——桥接模式
桥接设计模式将抽象部分与实现部分分离,使它们都可以独立的变化。通俗来说,是通过组合来桥接其它的行为/维度应用场景系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性不想使用继承导致系统类的个数急剧增加的系统有时候一个类,可能会拥有多个变化维度,比如啤酒,有不同的容量和品牌,可以使用继承组合的方式进行开发,假如维度很多,就容易出现类的膨胀,使用桥接模式就可以解决这个问题,且解耦业务重现我们需要构建一个手机类,我们知道手机有很多品牌,苹果、华为等,从另外一个颜色维度,又有多种颜色,原创 2021-07-12 20:43:32 · 140 阅读 · 0 评论 -
java设计模式系列6——适配器设计模式
适配器设计模式见名知意,是作为两个不兼容的接口之间的桥梁,属于结构型模式适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作常见的几类适配器类的适配器模式想将一个类转换成满足另一个新接口的类时,可以使用类的适配器模式,创建一个新类,继承原有的类,实现新的接口即可对象的适配器模式想将一个对象转换成满足另一个新接口的对象时,可以创建一个适配器类,持有原类的一个实例,在适配器类的方法中,调用实例的方法就行接口的适配器模式不想实现一个接口中所有的方法时,可以创建一个Ada原创 2021-07-12 19:49:28 · 92 阅读 · 0 评论 -
java设计模式系列5——建造者设计模式
建造者设计模式建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示允许用户只通过指定复杂对象的类型和内容就可以构建它们,不需要知道内部的具体构建细节场景举例KFC创建套餐:套餐是一个复杂对象,它一般包含主食如汉堡、烤翅等和饮料 如果汁、 可乐等组成部分,不同的套餐有不同的组合,而KFC的服务员可以根据顾客的要求,一步一步装配这些组成部分,构造一份完整的套餐编原创 2021-07-10 10:54:22 · 116 阅读 · 0 评论 -
java设计模式系列4——原型设计模式
概述是一种对象创建型模式,使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,主要用于创建重复的对象,同时又能保证性能工作原理是将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝自己来实现创建过程应该是最简单的设计模式了,实现一个接口,重写一个方法即完成了原型模式核心组成Prototype: 声明克隆方法的接口,是所有具体原型类的公共父类,Cloneable接口ConcretePrototype : 具体原型类Client: 让一个原型对象克隆原创 2021-07-09 20:19:35 · 110 阅读 · 0 评论 -
java设计模式系列3——抽象工厂模式
抽象工厂模式是基于简单工厂模式和工厂方法模式的拓展,是工厂方法模式的升级版,当需要创建的产品有多个产品线时使用抽象工厂模式是比较好的选择抽象工厂模式在 Spring 中应用得最为广泛的一种设计模式说明工厂方法模式引入工厂等级结构,解决了简单工厂模式中工厂类职责过重的问题但工厂方法模式中每个工厂只创建一类具体类的对象,后续发展可能会导致工厂类过多,因此将一些相关的具体类组成一个“具体类族”,由同一个工厂来统一生产,强调的是一系列相关的产品对象!!编码实现业务场景:在线教育网站,课程模块,一.原创 2021-07-09 19:09:07 · 102 阅读 · 0 评论 -
java设计模式系列2——工厂方法模式
一般工厂模式值得就是工厂方法模式工厂方法模式概述工厂方法模式又称工厂模式,是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则通过工厂父类定义负责创建产品的公共接口,通过子类来确定所需要创建的类型相比简单工厂而言,此种方法具有更多的可扩展性和复用性,同时也增强了代码的可读性将类的实例化(具体产品的创建)延迟到工厂类的子类(具体工厂)中完成,即由子类来决定应该实例化哪一个类。工厂方法模式图解:核心组成IProduct:抽.原创 2021-07-09 17:34:45 · 110 阅读 · 0 评论 -
java设计模式系列1——简单工厂模式
简单工厂模式实现步骤创建抽象产品类,里面有产品的抽象方法,由具体的产品类去实现创建具体产品类,继承了他们的父类,并实现具体方法创建工厂类,提供了一个静态方法createXXX用来生产产品,只需要传入你想产品名称具体实现抽象支付类/** * @author CV大魔王 * @Description 抽象支付类 * @date 2021/4/9 8:05 */public interface Pay { void unifiedorder();}具体实现类,支付宝支付原创 2021-07-09 15:57:41 · 116 阅读 · 0 评论