设计模式
文章平均质量分 92
丸子还是团子
这个作者很懒,什么都没留下…
展开
-
设计模式-代理模式
代理模式是一种结构型设计模式,它允许你提供一个替代物或占位符以控制对其他对象的访问。代理可以用于多种情况,例如延迟加载、权限控制、日志记录等。代理模式是一种强大的设计模式,可以用于许多不同的应用场景,例如延迟加载、权限控制、日志记录等。通过代理,我们可以在不改变原始对象的情况下增强其功能。在设计和编写代码时,考虑使用代理模式来提高代码的可维护性和可扩展性。原创 2023-09-04 10:53:54 · 1366 阅读 · 0 评论 -
设计模式-中介者模式
本文将详细介绍设计模式中的中介者模式,其中包括,中介者模式的优点、缺点、各组成部分。中介者模式(Mediator Pattern)是一种设计模式,它定义了一个中介者类,该类将多个对象之间的通信抽象化,使得这些对象可以通过中介者进行通信,从而降低它们之间的直接耦合度。中介者模式适用于多个对象之间存在复杂的交互关系,直接耦合会导致代码变得复杂、难以维护和扩展。中介者模式是一种重要的设计模式,它通过引入中介者类来降低多个对象之间的直接耦合度,从而提高代码的可维护性和可扩展性。原创 2023-09-02 21:12:21 · 995 阅读 · 1 评论 -
设计模式-职责链模式
职责链模式是一种处理多级请求的有效方式,它能够降低耦合度、增加灵活性和可复用性。但在使用时需要考虑可能的问题,并合理地解决。原创 2023-09-02 20:20:47 · 1138 阅读 · 0 评论 -
设计模式-观察者模式
观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。在某些平台上,可以向目标对象同时注册一个观察者对象和它的某个方法(成员函数)。这样当目标对象的状态改变时,它就调用这个观察者对象的这个注册的方法,而不一定要去调用它的update方法。这就允许这些观察者对象没有update方法,即它们不用都继承自同一个父类。原创 2023-09-02 17:04:04 · 889 阅读 · 0 评论 -
设计模式-工厂方法模式
工厂方法模式提供了一种将对象的创建与使用分离的方式,通过定义一个创建对象的工厂接口,让子类决定实例化哪个具体类。工厂方法模式可以在不知道具体对象类型的情况下创建对象,使代码更加灵活和可扩展。。原创 2023-06-24 09:47:36 · 789 阅读 · 1 评论 -
设计模式-命令模式
命令模式是一种行为型设计模式,它允许您将请求封装为一个对象,从而可以在不同的上下文中使用和参数化请求。这使得您能够延迟请求的执行、取消请求或将请求排入队列。原创 2021-10-24 16:26:20 · 1434 阅读 · 2 评论 -
行为型设计模式
行为型设计模式是关于对象之间交互和协作的模式。它们关注的是对象在运行时如何相互通信,以及如何分配职责和行为。原创 2021-08-31 11:14:18 · 729 阅读 · 1 评论 -
结构型设计模式(组合、享元)
本文将介绍结构型设计模式中的组合模式、享元模式。组合模式和享元模式都是结构型设计模式,用于管理对象之间的关系和提高系统的灵活性和性能。组合模式主要关注构建具有层次结构的对象,使得客户端可以以一致的方式处理单个对象和组合对象。享元模式主要关注减小内存开销,通过共享内部状态来避免重复创建相似对象,从而提高性能。组合模式适用于需要构建树状结构的场景,而享元模式适用于需要大量相似对象的场景。两者的关键差异在于目标:组合模式关注对象的结构,而享元模式关注对象的共享。原创 2021-08-28 08:08:02 · 1155 阅读 · 1 评论 -
创建型模式
创建型模式是一组设计模式,关注于对象的实例化过程,提供了灵活、可复用的方法来创建对象,同时隐藏了创建对象的细节。这些模式帮助我们解决了对象创建过程中的复杂性、灵活性和扩展性等问题。定义一个创建对象的接口,但将具体对象的实例化交给子类来完成。这样可以将对象的创建与使用分离,使得系统更加灵活。提供一个接口,用于创建一系列相关或依赖的对象,而无需指定具体的类。通过切换不同的具体工厂,可以创建不同系列的产品。将一个复杂对象的构建过程分解成一系列的步骤,允许客户端代码按需组合和配置这些步骤,从而创建出不同配置的对象。原创 2021-08-03 20:53:45 · 1109 阅读 · 3 评论 -
状态模式(State)
状态模式(State Pattern)是一种行为型设计模式,它允许一个对象在其内部状态发生改变时改变其行为,看起来就像是改变了它所属的类。状态模式的核心思想是将对象的状态封装成不同的状态类,对象在不同状态下表现出不同的行为,从而使得对象的行为在不同状态之间更加灵活和可控。原创 2021-06-29 08:41:59 · 4713 阅读 · 8 评论 -
单例模式(Singleton)
保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存他的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。原创 2021-06-28 17:15:15 · 1049 阅读 · 6 评论 -
备忘录模式
目录一、什么是备忘录模式?二、备忘录模式有什么优点吗?2.1、封装状态:2.2、实现撤销和恢复功能:2.3、简化原始对象:2.4、对用户友好的接口:2.5、支持多次撤销:2.6、实现历史记录:2.7、灵活性和可扩展性:2.8、解耦状态保存:三、有什么缺点吗?四、什么场合使用备忘录模式?五、代码展示5.1、发起人(Originator)类5.2、备忘录(Memento)类5.3、管理类(Caretaker)类5.4、客户端比如像我们平常使用的Ctrl+Z撤销操作、浏览器里面的回退操作、还有数据库的事务回滚、手原创 2021-06-28 17:11:06 · 1040 阅读 · 4 评论 -
组合模式(Composite)
将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。原创 2021-05-29 14:49:56 · 1809 阅读 · 13 评论 -
设计模式-桥接模式(Bridge)
桥接模式是一种结构型设计模式,它将抽象部分与其具体实现分离,使它们可以独立地变化。桥接模式通过将抽象和实现分离,提高了系统的灵活性和可扩展性。抽象部分定义了高层次的抽象接口,它包含一个对实现部分的引用,并将具体操作委托给实现部分。// 抽象部分// 具体实现。原创 2021-05-29 14:49:09 · 1043 阅读 · 21 评论 -
享元模式(Flyweight)
享元模式是一种结构型设计模式,它旨在通过共享相似对象的部分状态来减少内存使用和对象创建的开销。这种模式适用于大量具有相似属性的对象,将这些相似属性提取为共享的状态,以减少重复创建对象的成本。运用共享技术有效地支持大量细粒度的对象。我觉得它很像我们平常说的容器,只不过这个容器是用哈希表来存储的数据,通过键值对的形式,先把key和value值添加到哈希表里面,放入这个享元池里面,客户端通过提供的key值来获取value对象。这样的好处是什么呢?原创 2021-05-29 10:34:53 · 1019 阅读 · 9 评论 -
解释器模式(interpreter)
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。如果在一个系统中需要匹配字符的需求在软件的很多地方都会使用,而且行为之间都非常类似,过去的做法是针对特定的需求,编写特定的函数,比如判断Email、匹配电话号码等等,与其为每一个特定需求都写一个算法函数,不如使用一种通用的搜索算法来解释执行一个正则表达式,该正则表达式定义了待匹配字符串的集合。原创 2021-05-29 10:30:30 · 2521 阅读 · 18 评论 -
设计模式—简单工厂
简单工厂模式不属于GoF23种设计模式之一,但是实际中用途广泛,并且可以作为学习“工厂方法模式”以及“抽象工厂模式”的基础。在简单工厂模式中,工厂类提供一个创建产品的工厂方法,用于创建各种产品。客户端只需传入对应的参数,利用该方法即可根据传入参数的不同返回不同的具体产品对象。原创 2023-09-02 16:41:11 · 1184 阅读 · 13 评论