
《设计模式系列》
文章平均质量分 88
争做全网最详细、最深入的《Java设计模式》系列教程,包含基本的UML语言,类之间的关系,如依赖关系、关联、聚合、组合、泛化、实现等;包含创建型模式(5种)、行为型模式(8种)、结构型模式(11种)共23种设计模式大全
緑水長流*z
一个专注于编写自学教程的博主;热衷于分享当下热门的技术~
展开
-
《23种设计模式系列教程》
**一共包含创建型设计模式5种、结构型设计模式7种、行为型设计模式11种,共23种设计模式**- 1)**创建型模式:**用于描述“怎样创建对象“,它的主要特点是“将对象的创建与使用分离”。GoF 中提供了**单例、原型、工厂方法、抽象工厂、建造者**等 5 种创建型模式。- 2)**结构型模式:**用于描述如何将类或对象按某种布局组成更大的结构,GoF 中提供了**代理、适配器、桥接、装饰、外观、享元、组合**等 7 种结构型模式。- 3)**行为型模式:**用于描述类或对象之间怎样相互协作原创 2022-09-29 06:38:35 · 10261 阅读 · 3 评论 -
25【中介者设计模式】
中介者设计模式(Mediator Pattern):又叫调停设计模式,定义一个中介角色来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。【场景举例】在生活中,中介者设计模式比较常见;原创 2022-09-28 19:52:39 · 1081 阅读 · 0 评论 -
24【备忘录设计模式】
备忘录设计模式(Memento Pattern):又称快照模式(Snapshot Pattern),在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。备忘录模式提供了一种状态恢复的实现机制,它通过存储系统各个历史状态的快照,使得在任何一时刻都可以将系统回退到某一个历史状态;【场景举例】备忘录在我们生活中很容易遇见例1:例如我们打一些单机游戏的时候,游戏会提供一些存档功能,我们可以选择存档,下次就可以接着这个存档继续玩游戏了;原创 2022-09-28 19:51:10 · 1096 阅读 · 0 评论 -
23【状态设计模式】
状态设计模式(State Pattern):允许对象在内部状态发生改变时,改变他的行为,对象看起来好像修改了它的类;状态模式中类的行为是由状态来决定的,在不同的状态下有不同的行为。其核心是让一个对象在其内部改变的时候,行为也随之改变。状态模式关注的核心点时将状态与行为进行绑定,不同的状态具备不同的行为;【场景举例】状态模式在我们生活中比较常见例1:如某个社交网站中,普通用户的权限为发布文章、浏览文章、使用限定皮肤,而VIP用户可以发布付费文章、浏览付费资源、使用更加精美的皮肤;原创 2022-09-28 19:49:42 · 1539 阅读 · 0 评论 -
22【解释器设计模式】
解释器设计模式(Interpreter Pattern):给定一门语言,定义他的文法(语法)的一种表示,并定义解释器来解释语言中的句子,解释器模式是一种按照规定的文法(语法)进行解析的模式;解释器模式的核心就是将一些固定的语法进行解释,构建出一个解释句子的解析器,简单理解起来就是定义一个简答的语法解析工具,它可以识别句子的语义,提取出需要的信息,然后进行处理;原创 2022-09-28 19:48:39 · 1299 阅读 · 0 评论 -
21【模板方法设计模式】
模板方法设计模式(Template Method Pattern):在父类中定义一个算法的结构,将结构中的某些操作抽象化,延迟到子类中实现,使得子类可以不改变该算法结构的情况下,重定义该算法的某些特定步骤。模板方法的核心就是在父类中定义一个固定的流程,该流程有若干个步骤组成,具体的步骤可以有子类进行不同的实现,这样下来固定的步骤由于子类实现的不同,而产生不同的效果;在日常生活中,模板方法非常常见;例如:炒菜流程都是固定的,洗菜、切菜、倒油、翻炒、加调料、再翻炒、出锅;原创 2022-09-28 19:45:52 · 807 阅读 · 0 评论 -
20【访问者设计模式】
访问者设计模式(Visitor Pattern):是一种将数据结构与数据操作分离的设计模式,该模式封装一些作用于操作其内部的数据的步骤,可以在不改变数据结构的前提下定义作用于这些元素的新操作;生活中的访问者模式场景也非常多;如:一个家庭中有非常多的成员,如孩子、父亲、母亲等;这些家庭成员都有非常多的一些属性/行为,作为访问者的我们(丈夫、妻子)都可以去对家庭成员的信息进行访问,但是不同的角色访问的感兴趣的内容是不一样的;例如丈夫关心孩子的兴趣爱好、平时的生活信息,关心父母的饮食、社会生活等;原创 2022-09-28 19:44:52 · 1007 阅读 · 0 评论 -
19【迭代器设计模式】
迭代器设计模式(Iterator Pattern):它提供一种按顺序访问容器中对象的元素,而又无须暴露该容器的内部表示。迭代器模式可以为不同的容器提供一致的遍历行为,而不用关心容器内部元素的组成结构;迭代器模式的核心是把容器中的元素的迭代抽离到迭代器中,提供一致访问的接口;1)访问一个容器对象的内容而无须暴露他的内部表示2)为遍历不同的容器结构提供一个统一的访问(迭代)接口。原创 2022-09-28 19:43:25 · 973 阅读 · 0 评论 -
18【命令设计模式】
命令设计模式(Command Pattern):命令模式是对命令的封装,将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。命令模式解耦了请求方和接收方,请求方只需要请求执行命令,不需要关心命令怎样被接收,怎样被操作以及是否被执行等;在软件系统中,请求者与执行者通常是一种紧耦合关系,因为这些实现起来简单明了,但紧耦合的关系伴随着缺乏扩展性。在某些场合中,当对行为进行修改时必定要修改源代码。原创 2022-09-28 19:40:48 · 955 阅读 · 0 评论 -
17【观察者设计模式】
观察者设计模式(Observer Pattern):又称为发布订阅模式(Publish/Subsribe),它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。原创 2022-09-28 19:39:28 · 2453 阅读 · 0 评论 -
16【责任链设计模式模式】
责任链设计模式(Chain of Responsibility Pattern):将处理一个问题分为多个步骤来分别处理,这样有利于各个功能的解耦,分出来的多个步骤称为链路节点,多个节点形成一条链路;当一个请求发送时,首先经过链路的首端处理,一直沿着链路继续往下处理;责任链的核心在于各功能独立、解耦;例如在公司中,我们完成某项业务操作需要多部门审批才能成功,这单独的部门就可以看做独立的链路,每个部门审批的内容不一样,这就相当于每个功能的作用不一样;当所有的部门都审批完成了,就相当于整个链路执行完毕。原创 2022-09-28 19:37:32 · 2614 阅读 · 0 评论 -
15【策略设计模式】
行为型设计模式目的是将多个类或对象相互协作,以及怎样合理分配职责,共同完成单个类或对象无法单独完成的任务。在GoF中行为型设计模式有:解释器模式、模板方法模式、责任链模式、命令模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、访问者模式共11种。策略模式(Strategy Pattern):策略模式将定义的一系列算法单独封装起来,让它们之间可以相互替换,并且算法的变化不会影响使用算法的用户;原创 2022-09-20 19:12:17 · 3311 阅读 · 0 评论 -
14【适配器设计模式】
适配器设计模式(Adapter Pattern):将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式起着一个转换的作用,将一种接口转化为另一种符合需求的接口;适配器模式在生活中有很多应用场景,例如:电源转接头、手机充电转换头、变压器、扩展坞、以及各种外接设备的转换器。这些场景都是在输入一个不是目标的功能接口但结果却转换为目标接口;......原创 2022-08-16 16:44:31 · 3282 阅读 · 0 评论 -
13【装饰器设计模式】
装饰器设计模式(Decorator Pattern):也叫包装器设计模式(Wrapper Pattern),指在不改变原有对象的基础上,动态地给对象添加一些额外的功能。就增加功能来说,装饰器模式相比生成子类更为灵活。装饰设计模式的核心就是功能的扩展(增强),装饰器模式提供了比继承更有弹性的替代方案;...原创 2022-08-16 16:18:36 · 2959 阅读 · 0 评论 -
12【组合设计模式】
组合设计模式(Composite Pattern):又名部分整体模式,它把对象组合成树形结构以表示“部分-整体”的层次结构,并且将单个对象(叶子节点)与组合对象(树枝节点)使用相同的接口表示,使得用户对单个对象和组合对象的使用具有一致性。,他将对象组织到树形结构中,顶层的节点为根节点,根节点下面可以包含树枝节点和叶子节点,树枝节点下面又可以包含树枝节点和叶子节点;叶子节点则是普通节点,下面不可以包含其他节点;......原创 2022-08-16 16:16:27 · 2400 阅读 · 0 评论 -
11【门面设计模式】
门面模式(Facade Pattern):也叫外观设计模式,该模式对外有一个统一接口,用来访问子系统中的一群接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。其实我们在写代码时,有意无意的都在大量的使用门面设计模式,但凡高层模块需要调度多个子系统时,我们都会自觉的创建一个新类来封装这些子系统,提供精简的调用方式,让高层模块可以更加容易地间接调用这些子系统的功能;...原创 2022-08-16 16:14:33 · 2364 阅读 · 0 评论 -
10【桥接设计模式】
桥接模式(Bridge Pattern):将抽象部分与实现部分分离,使得它们可以独立变化。Tips:需要注意的是,桥接模式中的抽象并不是指抽象类或接口这种硬性概念,实现也不是具体指实现类;抽象与实现分离指的是两种维度的分离。这需要我们继续学习后面的知识;【案例】我们需要创建不同品牌的不同设备,这种关系使用继承来描述如下:设计好继承体系后,我们发现类的数量非常非常多,如果需要新增一个品牌或者新增一个设备都会导致类的数量激增;因为一个品牌都有手机、电脑、相机等设备。一个设备也会有小米、华为、神舟等品牌;...原创 2022-08-16 16:12:07 · 1897 阅读 · 0 评论 -
09【享元设计模式】
享元模式(Flyweight Pattern):享元模式主要的任务就是减少对象创建的数量,其宗旨是共享细粒度的对象,将多个对同一对象的访问集中起来,不必为每一个访问者都创建一个单独的对象,以减少内存占用和提高性能。Tips:享元的本质就是缓存共享对象,降低内存消耗;享元模式其实是工厂模式的一个改进机制,享元模式同样要求创建一个或一组对象,并且就是通过工厂方法模板生成的对象,只不过享元模式对工厂模式进行了改进,将重点放在了如何共享多个对象的访问,而不是重点考虑如何创建对象;...原创 2022-08-16 16:00:49 · 3129 阅读 · 0 评论 -
08【代理设计模式】
代理设计模式(Proxy Pattern):指为其他对象提供一种代理,以控制这个对象的访问;由于某种原因,一个对象不能够直接引用另一个对象时,代理对象可起到一个中介作用。即用代理对象来调用目标对象(被代理对象,资源的真实拥有者),并且代理对象也可以在目标对象的实现基础上进行增强,另外代理对象可以控制目标对象的访问,进行安全控制;Tips:代理模式主要的功能就是对类进行增强,并且对目标对象进行安全控制;调用者(客户端)代理角色真实角色(目标对象)买电脑的人电脑代理商生产电脑的厂商买火车票黄牛。......原创 2022-08-16 15:31:34 · 3273 阅读 · 0 评论 -
07【建造者设计模式】
我们可以使用接口抽取出某些对象的相同创建过程,将创建过程交由具体的实现类来完成,这样就可以使得相同的创建行为可以创建出不同的对象,分离了创建过程与具体表现,使得创建产品的灵活性大大增加。.........原创 2022-08-16 15:29:09 · 3140 阅读 · 0 评论 -
06【工厂设计模式】
在工厂方法设计模式中,工厂生产的是总是同一类的产品;例如产品1工厂只能生产产品1,产品2工厂只能生产产品2;这些工厂只生产同种类产品,而抽象工厂模式将考虑多种类产品的生产。在抽象工厂中,将同一种工厂生产出来的产品称为同族产品,而同一种工厂生产出来的不同产品称为同级产品;例如电子设备工厂能够生产手机,笔记本;旗下有小米工厂,华为工厂;小米工厂能够生产小米手机,小米笔记本;华为工厂能够生产华为手机,华为笔记本;同族产品:小米手机,小米笔记本属于同族产品,都属于小米品牌(都属于小米工厂创建的产品)......原创 2022-08-16 15:26:55 · 3321 阅读 · 1 评论 -
05【原型设计模式】
原型设计模式的核心在于复制原型对象,。有了原型设计模式就不需要我们来创建对象了,直接基于原型的实例对象进行克隆就可以;上面的代码就是没有原型设计模式之前的对象复制,使用起来非常繁琐,麻烦。原型设计模式就是来帮助我们避免上述代码来负责对象,采用更加优雅的方式进行对象的复制;......原创 2022-08-16 14:46:43 · 1383 阅读 · 0 评论 -
04【单例设计模式】
- 单例(Singleton)模式:**指一个类只有一个实例,且该类能自行创建这个实例的一种模式**。例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。单例是一种常用的设计模式,属于创**建型设计模式**。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。............原创 2022-06-24 07:27:54 · 4064 阅读 · 1 评论 -
03【设计模式的七大原则】
- **单一职责原则(Single Responsibility Principle,SRP):** - **原则:一个对象只负责单一的职责(一个类只干一件事)。** - **目的:便于理解,提高代码可读性。**- **接口隔离原则(Interface Segregation Principle,ISP):** - **原则:一个类对另一个类(接口)的依赖应该建立在最小接口上(一个接口只干一件事)。** - **目的:解耦,实现高内聚、低耦合。**- **开闭原则(Open Close.原创 2022-06-23 20:42:42 · 3049 阅读 · 0 评论 -
02【UML统一建模语言】
统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,UML是面向对象设计的建模工具,独立于任何具体程序设计语言。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。**UML 本身是一套符号的规定**,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如**类、接口、实现、泛化、依赖、组合、聚合**等......原创 2022-06-23 20:41:10 · 1051 阅读 · 0 评论 -
01【什么是设计模式】
设计模式(Design Pattern)是针对于软件设计中**反复出现**的问题所提出来的一个解决方案,是前人对代码开发经验的总结,它不是语法规定,学好设计模式可以开阔我们的编程思维,让我们编写的程序具备**可复用性、可扩展性、可读性、可靠性**以及安全性等;......原创 2022-06-23 20:38:45 · 1213 阅读 · 0 评论