
设计模式
文章平均质量分 76
java中的23中设计模式分析
1 + 1=王
优快云博客专家;
优快云优质创作者;
阿里云社区专家博主;
华为云云享专家;
51CTO专家博主;
热爱JAVA的计算机科学与技术(人工智能)研究生在读;
全国大学生计算机设计大赛国家二等奖;
三维数字化创新设计大赛四川省特等奖、国家三等奖;
蓝桥杯全国软件与信息技术专业人才大赛三等奖;
MathorCup数学建模挑战赛三等奖.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【每天一个java设计模式(完)】 - 四万字实现23种设计模式(附示例源码)
什么是设计模式:【每天一个java设计模式(零)】 - 设计模式基本概念及七大设计原则创建型模式工厂模式:【每天一个java设计模式(一)】 - 工厂模式抽象工厂模式: 【每天一个java设计模式(二)】 - 抽象工厂模式单例模式:【每天一个java设计模式(三)】 - 单例模式原型模式:【每天一个java设计模式(四)】 - 原型模式建造者模式: 【每天一个java设计模式(五)】 - 建造者模式结构型模型适配器模式 : 【每天一个java设计模式(六)】 - 适配器模式代理模.原创 2021-12-26 08:00:00 · 6412 阅读 · 25 评论 -
【每天一个java设计模式(二十三)】 - 访问者模式
在访问者模式中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。访问者模式包含以下主要角色。抽象访问者角色:定义一个访问具体元素的接口,为每个具体元素类对应一个访问操作 visit() ,该操作中的参数类型标识了被访问的具体元素。具体访问者角色:实现抽象访问者角色中声明的各个访问操作,确定访问者访问一个元素时该做什么。抽象元素角色:原创 2021-12-24 20:30:00 · 4335 阅读 · 1 评论 -
【每天一个java设计模式(二十二)】 - 迭代器模式
迭代器模式的定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是一种对象行为型模式。迭代器模式的实现:1. 创建一个迭代器接口//迭代器public interface Iterator { public boolean hasNext(); public Object next();}2. 创建一个容器类,并创建内部类实现迭代器接口public class Container { public String[] names;原创 2021-12-24 18:30:00 · 3924 阅读 · 0 评论 -
【每天一个java设计模式(二十一)】 - 中介者模式
中介者模式定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。中介者模式的实现:1. 创建一个Person类//一个用户public class Person { private String name; public String getName() { return name; } public void setName(String name)原创 2021-12-24 17:30:00 · 3831 阅读 · 1 评论 -
【每天一个java设计模式(二十)】 - 备忘录模式
备忘录模式保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。备忘录模式的实现:备忘录模式的主要角色如下:发起人(Originator)角色:记录当前时刻的内部状态信息,提供创建备忘录和恢复备忘录数据的功能,实现其他业务功能,它可以访问备忘录里的所有信息。备忘录(Memento)角色:负责存储发起人的内部状态,在需要的时候提供这些原创 2021-12-24 13:03:50 · 4117 阅读 · 0 评论 -
【每天一个java设计模式(十九)】 - 责任链模式
责任链模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。在责任链模式中,客户只需要将请求发送到责任链上即可,无须关心请求的处理细节和请求的传递过程,请求会自动进行传递。所以责任链将请求的发送者和请求的处理者解耦了。责任链的实现:1. 创建一个处理者抽象类//处理者抽象类public abstract class Handler { private Ha原创 2021-12-23 14:17:14 · 3822 阅读 · 1 评论 -
【每天一个java设计模式(十八)】 - 观察者模式
观察者模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。观察者模式存在一个控制主体,和许多的观察者,当控制主体状态改变时,所有观察者也都会做出反应。观察者模式的实现;1. 创建观察者抽象类//抽象观察者public abstract class Observer { public abstract void update();}2. 创建三个具体观察原创 2021-12-23 21:30:00 · 4015 阅读 · 2 评论 -
【每天一个java设计模式(十七)】 - 状态模式
在状态模式中,类的行为是基于它的状态改变的,允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。状态模式的实现:1. 创建状态的抽象类//抽象状态类public abstract class State { public abstract void handle(Context context);}2. 创建抽象类的两个具体状态//状态原创 2021-12-23 20:30:00 · 4442 阅读 · 0 评论 -
【每天一个java设计模式(十六)】 - 策略模式
策略模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。下面我们通过加减乘的运算来实现策略模式。策略模式的实现;1. 创建一个策略接口public interface Strategy { public int operate(int x,int y);}2. 创建策略接口的三个实现类,分别表示加减乘运原创 2021-12-23 19:15:00 · 4737 阅读 · 1 评论 -
【每天一个java设计模式(十五)】 - 命令模式
命令模式是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。命令模式也就是一个用户发送请求,调用者接收命令,再将命令发送给接受者,最后接收者作出相应的过程命令模式的实现:1. 创建接受者public class Receiver { public void action(){ System.out.println("接受者执行方法"); }}2原创 2021-12-23 18:30:00 · 4459 阅读 · 0 评论 -
【每天一个java设计模式(十四)】 - 解释器模式
解释器模式提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。解释器模式主要包括以下几个部分:抽象表达式角色:定义解释器的接口,约定解释器的解释操作,主要包含解释方法 interpret()。终结符表达式角色:是抽象表达式的子类,用来实现文法中与终结符相关的操作,文法中的每一个终结符都有一个具体终结表达式与之相对应。非终结符表达式角色:也是抽象表达式的子类,用来实现文法中与非终结符相关的操作,文法中的每条规则都对应于一个非终结符表达式。原创 2021-12-23 14:03:38 · 4062 阅读 · 1 评论 -
【每天一个java设计模式(十三)】 - 模板模式
在模板模式中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。原创 2021-12-23 11:39:17 · 3780 阅读 · 0 评论 -
【每天一个java设计模式(十二)】 - 组合模式
组合模式,又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。我们通过下面的实例来演示组合模式的用法。组合模式的实现:假设现在有一个学校,学校中校长管理一些老师,老师管理一些学生,我们通过实例演示了这个学校中人员的层次结构。创建一个Person类//表示一个人public class Person原创 2021-12-23 08:30:00 · 4384 阅读 · 1 评论 -
【每天一个java设计模式(十一)】 - 享元模式
享元模式主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。享元模式的实现:1. 创建手机类//手机类public class Phone { private String brand; //原创 2021-12-22 22:30:00 · 4466 阅读 · 0 评论 -
【每天一个java设计模式(十)】 - 外观模式
外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。外观模式的实现假设我们解决一个问题需要经过设计、建模、运行三个阶段,我们使用外观模式来隐藏这三个阶段,只给用户提供一个解决问题的接口。1. 创建设计类//设计public class Design { public void design(){ System.out.println("一:设计"); }}2.原创 2021-12-22 20:00:00 · 3766 阅读 · 1 评论 -
【每天一个java设计模式(九)】 - 装饰器模式
装饰器模式允许向一个现有的对象添加新的功能,同时又不改变其结构。装饰器模式属于结构型模式,它是作为现有的类的一个包装。使用给手机添加不同的功能为例,来实现装饰器模式:装饰器模式的实现1. 创建一个产品接口//产品接口public interface Product { public void function(); //产品的功能}2. 创建一个手机类实现产品接口//手机实体public class Phone implements Product { publi原创 2021-12-22 15:29:53 · 4334 阅读 · 1 评论 -
【每天一个java设计模式(八)】 - 桥接模式
在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。桥接模式将抽象部分与它的实现部分分离开来,使他们都可以独立变化,它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。下面我们就通过桥接模式来创建不同颜色不同形状的图形。桥接模式的实现:1. 创建一个颜色接口//颜色接口public interface Color { //对传入的图形上色 public void colorByShape();}2. 创建三种颜色//红原创 2021-12-22 08:30:00 · 3997 阅读 · 1 评论 -
【每天一个java设计模式(七)】 - 代理模式
由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。在代理模式中,一个类代表另一个类的功能,为其他对象提供一种代理以控制对这个对象的访问。这种类型的设计模式属于结构型模式。代理模式的实现1. 创建一个接口//接口public interface Product { void show();}2. 创建接口的实体类//接口的实体类public class RealProduct imple原创 2021-12-21 20:29:22 · 4247 阅读 · 0 评论 -
【每天一个java设计模式(六)】 - 适配器模式
当某种业务功能已经实现,但它们与当前系统的接口不兼容,如果重新开发成本又很高,这时用适配器模式能很好地解决这些问题。适配器模式是作为两个不兼容的接口之间的桥梁,属于结构型模式,它结合了两个独立接口的功能。将一个类的接口转换成需要的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式的实现:假设有两款不同年代的电脑,一台功率100W,另一台功率200W。但是现在只有一个100W的充电器,我们要让它为200W的电脑充电,这时候我们就需要创建一个适配器来完成这个工作。1. 创原创 2021-12-20 17:27:25 · 4276 阅读 · 0 评论 -
【每天一个java设计模式(五)】 - 建造者模式
在软件开发过程中有时需要创建一个复杂的对象,这个复杂对象通常由多个子部件按一定的步骤组合而成。建造者模式使用多个简单的对象一步一步构建成一个复杂的对象。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。建造者模式的实现假设我们要构造一台电脑,包括主机、显示器、键鼠套装三个部分。那么我们可以通过以下方式来实现建造者模式。1. 创建一个电脑类类中包括主机、显示器、键鼠套装三个属性,以及他们的set方法和一个show原创 2021-12-19 13:30:48 · 3936 阅读 · 6 评论 -
【每天一个java设计模式(四)】 - 原型模式
原型模式是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式。它是用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,不需要知道对象创建的细节。Java中提供了对象的 clone() 方法,所以实现原型模式很简单。他主要就包括了深克隆和浅克隆两种方式。如果中java中的克隆不能很了解的话,可以参考我写的这篇文章:java中浅克隆与深克隆解析原型模式的实现创建一个原型类pu原创 2021-12-17 19:43:55 · 4154 阅读 · 1 评论 -
【每天一个java设计模式(三)】 - 单例模式
单例模式是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,指一个类只有一个实例,且该类能自行创建这个实例的一种模式。单例模式有 3 个特点:单例类只有一个实例对象;该单例对象必须由单例类自行创建;单例类对外提供一个访问该单例的全局访问点。通常有两种方式用来实现单例模式:懒汉式、饿汉式懒汉式懒汉式不在类加载的时候生成实例,只有当第一次调用 getlnstance 方法时才去创建这个单例。//懒汉式public class LazySingle { priva原创 2021-12-16 19:20:21 · 4194 阅读 · 1 评论 -
【每天一个java设计模式(二)】 - 抽象工厂模式
工厂方法模式只考虑生产同等级的产品,但是在现实生活中许多工厂是综合型的工厂,能生产多等级(种类) 的产品。抽象工厂模式是围绕一个超级工厂创建其他工厂,该超级工厂又称为其他工厂的工厂。抽象工厂模式是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。下面给出抽象工厂的实例:假设现在有一个工厂可以生产一些产品(手机、电脑、飞原创 2021-12-15 20:06:43 · 5084 阅读 · 0 评论 -
【每天一个java设计模式(一)】 - 工厂模式
工厂模式是 Java 中最常用的设计模式之一。它属于创建型模式,提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象,即定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。使用工厂模式,用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程;只需要知道产品的抽象类,无须关心其他实现类,满足迪米特法则、依赖倒置原则和里氏替换原则。可以通过以下步骤来实现一个工厂模原创 2021-12-14 19:53:21 · 4226 阅读 · 0 评论 -
【每天一个java设计模式(零)】 - 设计模式基本概念及七大设计原则
设计模式概述设计模式是什么?它是软件开发人员在软件开发过程中经过相当长的一段时间的试验和错误总结出来的面临的一般问题的解决方案;它是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结;它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。设计模式能干什么?实现代码的可重用性增加代码的可维护性减低代码的被理解难度保证代码的可靠性增加系统的健壮性易修改可扩展设计模式七大设计原则1. 开闭原则对扩展开放,对修改关闭。当应用的原创 2021-12-14 08:30:00 · 4063 阅读 · 0 评论