
设计模式
文章平均质量分 90
Java23种设计模式
活跃的咸鱼
博客内容大部分均来日常学习的笔记。
展开
-
java设计模式之访问者模式
访问者模式访问者模式概述访问者模式类图访问者模式结构访问者模式案例实现访问者模式的优缺点访问者模式的使用场景访问者模式扩展访问者模式概述定义:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。访问者模式类图访问者模式结构访问者模式包含以下主要角色:抽象访问者(Visitor)角色:定义了对每一个元素(Element)访问的行为,它的参数就是可以访问的元素,它的方法个数理论上来讲与元素类个数(Element的实现类个数)是一样的,从这原创 2021-11-20 14:47:08 · 537 阅读 · 0 评论 -
装饰器模式与JavaIO流
装饰器模式介绍:装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。何时使用:在不原创 2021-07-07 14:13:06 · 819 阅读 · 5 评论 -
适配器模式+源码分析
生活中的案例不同国家使用的插头是不同的。有一天程序员老王去泰国旅游晚上回到酒店正准备给手机充电发现充电器并不能适配泰国的插座,此时老王很是郁闷于是喊来了酒店的管理人员,酒店的管理人员给了老王一个多功能转换插头(相当于适配器),老王手机可以充电了,于是老王又可以快乐的玩起了手机,开心的逛优快云了。适配器模式概念:适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能,主要的目的是兼容性,让原本因接口不匹配不能一起工作原创 2021-06-20 18:09:39 · 516 阅读 · 10 评论 -
java设计模式之观察者模式
天气预报需求气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。需要设计开放型API,便于其他第三方也能接入气象站获取数据。提供温度、气压和湿度的接口测量数据更新时,要能实时的通知给第三方普通方案通过getXxx方法,可以让第三方接入,并得到相关信息.当数据有更新时,气象站通过调用dataChange() 去更新数据,当第三方再次获取时,就能得到最新数据,当然也可以推送。public class CurrentConditions {原创 2021-06-04 09:42:05 · 2608 阅读 · 15 评论 -
if else终结者——策略模式
你是不是还在写着大量的if else语句,if else 不仅难以维护不易扩展,而且使代码臃肿不堪,想不想让你的业务代码更加的健壮,更易扩展,那你一定要学一学今天的主角策略模式。学会了策略模式的使用让会你的代码更加优雅。老板看了给你加薪。同事看了对你仰慕。策略模式大家用了都说好。阅读完本篇文章你将了解到什么是策略模式,策略模式的优缺点,以及策略模式在源码中的应用。策略模式引入在软件开发中,我们常常会遇到这样的情况,实现某一个功能有多条途径,每一条途径对应一种算法,此时我们可以使用一种设计模式来实现.原创 2021-05-28 12:03:00 · 12116 阅读 · 40 评论 -
设计模式之责任链模式
责任链模式一个事件需要经过多个对象处理是一个挺常见的场景,譬如采购审批流程,请假流程,软件开发中的异常处理流程,web请求处理流程等各种各样的流程,可以考虑使用责任链模式来实现。以采购审批流程为例:使用 if-else 传统方案来实现这个采购审批流程的简化代码如下:public class BuyApprove { public boolean process(String request, long money) { boolean result = handleByDi原创 2021-05-21 10:28:39 · 264 阅读 · 3 评论 -
设计模式之迭代器模式
迭代器模式的引入如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码吧:public static void print(Collection coll){ Iterator it = coll.iterator(); while(it.hasNext()){ String str = (String)it.next(); System.out.println(str); }}这个方法的作用是循环打印一个字符串集合原创 2021-05-18 14:15:06 · 173 阅读 · 4 评论 -
java设计模式之组合模式
需求分析编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系。如图:传统方案解决学校院系展示(关系图)将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的实际上我们的要求是 :在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系, 因此这种方案,不能很好实现的管理的操作,比如对学院、系的添加,删除,遍历等解决方案:把学校、院、系都看做是组织结构,他们之间没有继承的关系,而是一个树形结构,转载 2021-05-05 16:28:43 · 187 阅读 · 1 评论 -
Java设计模式之装饰者模式
由于之前学完了尚硅谷韩顺平老师的Java设计模式,为了方便复习总结与更好理解设计模式特此记录下来我们通过一个星巴克咖啡订单项目来引出装饰者模式星巴克咖啡订单项目星巴克咖啡订单项目(咖啡馆):咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡)调料:Milk、Soy(豆浆)、Chocolate要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便使用OO的来计算不同种类咖啡的费用: 客户可以点单品咖啡,也.转载 2021-05-01 19:37:04 · 219 阅读 · 1 评论 -
Java设计模式之模板方法模式
模板方法模式基本介绍模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。简单说,模板方法模式 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定步骤。这种类型的设计模式属于行为型模式。模板方法类图对原理类图的说明-即(模板方法模式的角色及职责)Abstra转载 2021-04-21 21:56:19 · 211 阅读 · 1 评论 -
Java设计模式之桥接模式
手机问题要了解桥接模式我们先来看一个例子现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等)。传统方案解决手机操作问题传统方案解决手机使用问题(类图):传统方案解决手机操作问题分析扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。违反了单一职责原则,当我们增加手机样式时,要同时增加所有品牌的手机,这样增加了代码维护成本.解决方案-使用桥接模式桥接模式基本介绍:原创 2021-04-19 20:53:20 · 205 阅读 · 0 评论 -
java设计模式之建造者模式
建造者模式基本介绍建造者模式(Builder Pattern) 又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。建造者模式 是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式的四个角色Product(产品角色): 一个具体的产品对象。Builder(抽象建造者): 创建一个Product对象的各个部件指定的 接口/抽原创 2021-04-07 12:38:39 · 1501 阅读 · 2 评论 -
java设计模式之原型模式
克隆羊问题现在有一只羊,姓名为:多利, 年龄为:1,颜色为:白色,请编写程序创建和多利羊 属性完全相同的10只羊。传统方案:public class Sheep { private String name; private String color; private int age; public Sheep(String name, String color, int age) { this.name = name; this.col原创 2021-03-25 15:45:32 · 306 阅读 · 0 评论 -
java设计模式之代理模式
代理模式的基本介绍代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象代理模式有不同的形式, 主要有三种 静态代理、动态代理 (JDK代理、接口代理)和 Cglib代理 (可以在内存动态的创建对象,而不需要实现接口, 他是属于动态代理的范畴) 。静态代理静态代理在使用时,需要定义接口或者父类,被代理对象(即目标对原创 2021-03-22 09:34:48 · 310 阅读 · 0 评论 -
java设计模式之单例模式
这里写自定义目录标题单例设计模式介绍单例模式应用场景单例设计模式八种方式1.1 饿汉式(静态常量)1.2 饿汉式(静态代码块)1.3懒汉式(线程不安全)1.4懒汉式(线程安全,同步方法)创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入单例设计模式介绍所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并原创 2021-03-16 16:43:21 · 668 阅读 · 1 评论 -
设计模式之七大原则
设计模式的由来软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领域引入到计算机科学的。设计模式的目的代码重用性 (即:相同功能的代码,不用多次编写)。可读性 (即:编程规范性, 便于其他程序员的阅读和理解)。可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护。可靠性 (即:当我们增加新的功能后,对原来的功能没有影响)。使程序呈现高内聚,低原创 2021-03-13 14:12:14 · 475 阅读 · 2 评论