设计模式
天哥不爱学习
工作了10年的程序员,PHP python Java 都有所涉猎,过去6年就职于某世界500强企业。
展开
-
设计模式之解释器模式讲解
概念:是一种按照规定语法对表达式进行解析的方案。给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。【天哥不爱学习的个人空间-哔哩哔哩】 https://b23.tv/HxwqjXl。原创 2024-04-09 09:00:00 · 110 阅读 · 0 评论 -
设计模式之状态模式讲解
概念:又称为状态对象模式,该模式允许一个对象在其内部状态改变时改变其行为。状态模式的核心是封装,状态的变更引起行为的变动,从外部看来就好像该对象对应的类发生改变一样。【天哥不爱学习的个人空间-哔哩哔哩】 https://b23.tv/HxwqjXl。原创 2024-04-09 09:00:00 · 172 阅读 · 0 评论 -
设计模式之访问者模式讲解
概念:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新操作。【天哥不爱学习的个人空间-哔哩哔哩】 https://b23.tv/HxwqjXl。原创 2024-04-09 09:00:00 · 135 阅读 · 0 评论 -
设计模式之备忘录模式讲解
概念:又称为快照模式或Token模式。在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样,以后就可以将该对象恢复到原先保存的状态。通俗点说就是备份一个对象,比较典型的场景就是游戏的存档恢复。【天哥不爱学习的个人空间-哔哩哔哩】 https://b23.tv/HxwqjXl。原创 2024-04-08 18:28:17 · 350 阅读 · 0 评论 -
设计模式之观察者模式讲解
概念:定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。【天哥不爱学习的个人空间-哔哩哔哩】 https://b23.tv/HxwqjXl。原创 2024-04-08 17:30:45 · 1124 阅读 · 2 评论 -
设计模式之中介者模式讲解
概念:也称为调停者模式。用一个中介者对象封装一系列对象的交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。【天哥不爱学习的个人空间-哔哩哔哩】 https://b23.tv/HxwqjXl。以下用一个同事之间沟通的例子来帮助大家理解。原创 2024-04-08 16:34:18 · 548 阅读 · 0 评论 -
设计模式之迭代器模式
在Java语言中,从JDK1.2版本开始,增加了java.util.Iterator接口,并将Iterator应用到各个聚集类(Collection)中,如 ArrayList、Vector、Stack、HashSet 等集合类都实现了 iterator()方法,返回一个迭代器Iterator,便于对集合中的元素进行遍历。也正因为 Java 将迭代器模式已经融合到基本的API中,使我们在项目中无须在独立地写迭代器,直接使用即可,这样既轻松又便捷。如果大家需要视频版本的讲解,欢迎大家关注我的B站。原创 2024-04-08 15:30:19 · 363 阅读 · 0 评论 -
设计模式之策略模式讲解
概念:定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换,使得算法可以在不影响客户端的情况下发生变化。下面以一个购物的例子,根据不同用户身份,给与用于不同折扣,来帮助大家理解这个模式。【天哥不爱学习的个人空间-哔哩哔哩】 https://b23.tv/HxwqjXl。原创 2024-04-08 14:57:54 · 359 阅读 · 0 评论 -
设计模式之命令模式讲解
概念:命令模式(Command Pattern)又称行动(Action)模式或交易(Transaction)模式。将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。接下来用一个开关灯的例子,帮助大家理解这个结构。十五、设计模式之命令模式讲解。原创 2024-04-08 13:44:18 · 489 阅读 · 0 评论 -
设计模式之责任链模式讲解
概念:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。最匹配的场景应该就是逐层审批的模式。责任链模式只有两个角色,一个抽象处理类,一个具体处理类。这个模式的关键在于多个处理类层层持有,形成一个链条,并各自处理职责内的请求。如果大家需要视频版本的讲解,欢迎大家关注我的B站。下面以一个请假审批的例子,帮助大家理解该模式。十五、设计模式之命令模式讲解。原创 2024-04-08 13:43:30 · 611 阅读 · 0 评论 -
设计模式之模板方法模式
只有两个角色,抽象模板和具体模板类。抽象模板负责定义模板方法和其他方法,并在模板方法中以一定顺序调用其他方法。其他方法可以是抽象方法,通常需要子类进行重写(就是所谓的延迟到子类中实现),也可以是具体方法,一般是通用的步骤。概念:定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。从这节开始,我们进入行为型模式的学习。行为型模式第一个模式就是模板方法模式。十四、设计模式之模板方法模式。原创 2024-04-07 14:21:28 · 433 阅读 · 0 评论 -
设计模式之享元模式
用一个下围棋的例子来帮助大家理解。围棋只有黑棋和白棋,不必每次都创建新对象,这是内部状态。而棋子的落点可以作为外部状态传进来。概念:是池技术的重要实现方式,可以降低大量重复的、细粒度的类在内存中的开销。享元模式是以共享的方式高效地支持大量的细粒度对象。享元对象能做到共享的关键是区分内部状态和外部状态。如果大家需要视频版本的讲解,欢迎关注我的B站。十三、设计模式之享元模式讲解。原创 2024-04-05 22:52:08 · 366 阅读 · 0 评论 -
设计模式之外观(门面)模式
概念:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。外观模式提供一个高层次的接口,使得子系统更易使用。外观模式注重“统一的对象”,即提供一个访问子系统的接口,只有通过该接口(Facade)才能允许访问子系统的行为发生。Facade就是访问子系统的统一入口,Sub System代表的是子系统当中所有类,当然也可以有多个子系统。十二、设计模式之外观模式讲解。原创 2024-04-04 13:08:27 · 336 阅读 · 0 评论 -
设计模式之桥接模式
概念:将抽象和实现解耦,使得两者可以独立地变化。以一个生产手机的例子来帮助大家理解。十一、设计模式之桥接模式讲解。原创 2024-04-03 22:51:43 · 561 阅读 · 0 评论 -
设计模式之组合模式
概念:将对象组合成树形结构以表示“部分——整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。组合模式最经典的例子就是文件和文件夹结构。下面用一个这样的例子来帮助大家理解组合模式。原创 2024-04-01 14:57:14 · 901 阅读 · 0 评论 -
设计模式之适配器模式
结构比较简单,有一个目标接口,需要将原始类的操作,通过适配器类转换成目标接口的操作。适配器类既要实现目标接口,也要继承原始类。这里我们来举一个变压器的例子。概念:将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。九、设计模式之适配器模式精讲。原创 2024-03-31 18:45:50 · 505 阅读 · 0 评论 -
设计模式之代理模式精讲
实际开发中,实现类如果是一个API,我们可以在代理类中进行很多操作。好处是非常明显的,整个过程我们没有改动已有的API,只是在代理类中对已有操作进行重新组合。AOP面向切面编程,也是非常形象的表达。代理模式(Proxy Pattern)也叫委托模式,是一个使用率非常高的模式,比如我们在Spring中经常使用的AOP(面向切面编程)。代理类和实际的主题类都实现同一个接口,由代理类代替主题类去做一些操作,并且在操作的基础上,增加一些额外的操作。下面我们以代理买房的例子,来帮助大家理解代理模式的使用。原创 2024-03-29 15:48:30 · 630 阅读 · 0 评论 -
设计模式之装饰模式精讲
装饰器模式侧重于在不改变接口的前提下动态地给对象添加新功能,保持对象结构的透明性,客户端无感知。概念:动态地给一个对象添加一些额外的职责。八、设计模式之装饰模式精讲。原创 2024-03-31 00:05:30 · 588 阅读 · 0 评论 -
设计模式之原型模式讲解
原型模式本身就是一种很简单的模式,在Java当中,由于内置了Cloneable 接口,就使得原型模式在Java中的实现变得非常简单。我们来举一个生成新员工的例子来帮助大家理解。原创 2024-03-28 11:52:25 · 492 阅读 · 0 评论 -
设计模式之建造者模式精讲
将一个复杂的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。原创 2024-03-27 20:51:14 · 763 阅读 · 0 评论 -
设计模式之抽象工厂模式精讲
我们创建这三个接口,对应UML图中的ProductA和ProductB,当然这里是三种产品,也可以更多。然后生产奔驰和宝马两个产品线,即创建6个类,奔驰车的车架、引擎和轮胎,宝马车的车架、引擎和轮胎,分别继承自车架、引擎和轮胎接口。然后在工厂类这边,我们创建一个带有3个方法的接口,分别是创建车架、创建引擎、创建轮胎。这样一来,我们的两个实现类(奔驰生产工厂和宝马生产工厂)就可以分别有一条生产汽车的流水线了。概念:为创建一组相关或相互依赖的对象提供一个接口,而且无须指定他们的具体类。原创 2024-03-26 17:24:19 · 1059 阅读 · 0 评论 -
设计模式之工厂方法模式精讲
假设有一个果农接口,相当于图中的Creator,有一个葡萄果农和一个苹果农分别实现果农接口,这两个类相当于ConcreteCreator类。然后有一个水果接口 ,相当于Product接口,一个苹果类和一个葡萄类分别实现水果接口。这时候注意体会工厂方法模式和简单工厂模式的区别,工厂方法模式把创建对象的工作分别放到葡萄果农和苹果农的类中去实现,也就是在具体类中实现。工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建性工作推迟到子类中。工厂模式可以分为简单工厂、工厂方法和抽象工厂模式。原创 2024-03-26 16:55:51 · 540 阅读 · 0 评论 -
设计模式之单例模式精讲
【代码】设计模式之单例模式精讲。原创 2024-03-25 14:26:10 · 651 阅读 · 0 评论 -
设计模式概念、分类和原则
设计模式的概念 设计模式是针对面向对象设计中常见问题的标准化、可复用的解决方案模板,它们是基于经验和原则的抽象指导,旨在提升代码质量和软件开发效率。通过恰当运用这些模式,Java开发者可以构建更为健壮、灵活和易于维护的软件系统。 设计模式的分类 创建型模式(关注对象的创建过程,旨在将对象的创建和使用分离) 单例模式 工厂方法模式 抽象工厂模式 建造者模式 原型模式 结构型模式(关注如何组合对象以形成更大的结构,简化系统结构) 适配器模式 装饰器模式原创 2024-03-25 12:35:50 · 460 阅读 · 0 评论