设计模式实战
文章平均质量分 94
亲爱的朋友,我想和你分享一些关于设计模式实战应用的技术文章。这些文章深入浅出地介绍了各种经典的设计模式,以及它们在现实项目中的应用。无论你是希望提高你的编程技能,还是想更好地理解和应用设计模式,这些文章都将为你提供宝贵的实战经验和技巧。希望你能喜欢这些文章,并从中获得更多的启示和帮助。
凡夫贩夫
独立开发者,服务范围:软件定制;技术方案编写;技术咨咨询;
展开
-
基于策略模式和简单工厂模式实现zip、tar、rar、7z四种压缩文件格式的解压
这篇技术文章深入探讨了基于策略模式和简单工厂模式实现四种常见压缩文件格式的解压方法。通过阅读该文章,你将了解到如何利用这两种设计模式来实现灵活、可扩展的解压功能,同时适应不同的压缩文件格式。如果你对设计模式和文件处理感兴趣或刚好碰到类似的情况,那么这篇文章绝对值得一读。它会为你打开一个新的思路,并帮助你提升在软件开发中的技能和效率。最近我遇到了一个需求,需要上传一个压缩包文件,其中包含目录和文件。上传成功后,后台会自动解压该文件,并保持压缩包内目录和文件的结构不变,然后将该结构渲染到页面上。这个需求其实相对原创 2023-12-29 18:21:15 · 1669 阅读 · 1 评论 -
策略模式与简单工厂模式:终结if-else混乱,让代码更清爽
在软件开发过程中,我们常常面临着许多问题,其中之一就是如何有效地管理复杂的逻辑和流程。策略模式和工厂模式是两种非常实用的设计模式,可以帮助我们解决这些问题。本文将介绍策略模式和简单工厂模式的概念、实现和应用,并通过实例代码来演示它们的使用方法。策略模式与简单工厂模式可以终结if-else混乱的工作原理是:通过封装算法和对象创建,使得代码更加模块化和可维护原创 2023-12-02 17:17:59 · 1665 阅读 · 5 评论 -
《大话设计模式》让设计模式不再高深,连傻瓜都可以读得懂
最近刚刚完成了设计模式的专栏的编写,其实关于设计模式的内容,早都想写点东西总结一下设计模式。为什么特别想写这方面东西,其中很大程度是受了《大话设计模式》这本书的影响,通过阅读这本书,我了解到了设计模式的魅力,也就滋生了要学习并掌握好它的念头。回到这本书本身,有人评价是:把复杂难懂的方法论包含在简单幽默对话中,作者真是厉害!当然,还有另外一种评价:内容写得太简单,有点糊弄人,一点都不严肃、认真!原创 2023-11-15 10:29:09 · 144 阅读 · 1 评论 -
设计模式系列之最终篇:大盘点
这篇文章是设计模式专栏系列的总结篇,本篇内容主要分为四个部分:第二部分:设计模式的重点回顾;第三部分:设计模式的学习方法;第四部分:设计模式如何实战应用;创建相关或依赖对象的家族,而无需明确指定具体类。主要适用于创建一系列相关或相互依赖的对象,而不需要指定其具体类。原创 2023-11-14 17:03:19 · 975 阅读 · 4 评论 -
设计模式之解释器模式
解释器模式(Interpreter Pattern)是一种行为型设计模式,给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例,其核心原理是将一个语言表达式表示为一个抽象语法树,然后定义解释器来遍历这棵语法树并执行相应的操作。是的,没有看错,这就是解释器模式的标准定义,是不是和我一样,看完后完全处于懵逼状态,这里语言是什么?文法又是什么?语法树是什么?解释器是怎么解释句子的?...讲真的,解释器模式确实不太好理解。原创 2023-11-13 16:07:09 · 478 阅读 · 1 评论 -
设计模式之中介者模式
中介者模式是一种软件设计模式,它允许定义一个中间对象(中介者),来协调一组对象之间的交互。通过将一组对象之间的交互抽象化到一个单独的对象中,使得各个对象不必直接交互,而只与中介者发生交互,从而使原本复杂的多对多的关系变成相对简单的单对单或一对多的关系。中介者模式是一种软件设计模式,它的目的是将一组对象之间的交互抽象化到一个单独的对象中,使得各个对象不必直接交互,而只与这个中间对象发生交互。这种模式可以帮助我们减少类之间的依赖关系,实现类之间的解耦,并简化复杂的交互关系。原创 2023-11-09 15:54:43 · 876 阅读 · 1 评论 -
设计模式之访问者模式
访问者模式是一种行为设计模式,它允许你在不改变类的结构的情况下增加新的操作。它是通过让对象决定哪些算法可以作用于它所包含的元素,从而增加新的操作类型来实现的。访问者模式是一种非常有用的模式,它可以将数据结构与数据操作分离,增加新的操作类型,而不改变数据结构。在访问者模式中,有一个元素接口,它定义了所有元素类的公共方法,即接受访问的方法。然后,每个元素类都实现了这个接口,将自己的特定数据和操作封装起来。接着,有一个访问者接口,它定义了所有访问者的公共方法,即访问元素的方法。原创 2023-11-08 18:47:42 · 382 阅读 · 1 评论 -
设计模式之状态模式
状态模式是一种行为型设计模式,允许对象在内部状态发生改变时改变它的行为。它适用于行为随状态改变而改变的场景,如一个操作中含有庞大的多分支结构,并且这些分支取决于对象的状态。状态模式的核心是状态与行为绑定,不同的状态对应不同的行为。它定义了各种状态类,每个状态类中定义了对应的状态行为,并且状态类之间通过继承实现状态的转移。通过使用状态模式,可以将与特定状态相关的行为局部化到一个状态中,并且将不同状态的行为分割开来,满足单一职责原则。原创 2023-11-08 10:54:29 · 831 阅读 · 1 评论 -
设计模式之备忘录模式
备忘录模式,又称之为快照模式(Snapshop Pattern),是一种行为型设计模式,,它允许在不破坏对象封装性的前提下,捕获并保存一个对象的内部状态,以便在需要时恢复该对象到原先的状态。备忘录模式可以为我们提供一种“后悔药”的机制,它通过存储系统中各个历史状态的快照,使得我们可以在任一时刻将系统回滚到历史状态。备忘录模式的本质是在不破坏封装性的前提下,捕获和存储一个对象的内部状态,并在需要时将对象恢复到先前的状态。它可以将对象的状态封装在备忘录对象中,使得对象的状态对外部对象是不可见的。原创 2023-11-07 11:57:58 · 401 阅读 · 1 评论 -
设计模式之命令模式
命令模式(Command Pattern)是一种行为型设计模式,它将请求和处理分开,使得请求发送者和接收者解耦,从而降低系统的耦合度。在命令模式中,请求被封装为一个独立的对象,并且将其参数化,以便在不同的请求中传递不同的参数。命令模式是一种行为型设计模式,它允许将请求或操作封装成对象,从而解耦了请求发送者和接收者之间的耦合关系,具有解耦、抽象、事务支持、撤销支持、日志记录和宏命令等优点,但也存在具体命令类过多、实现复杂度高和设计难度大等缺点。在使用命令模式时,需要根据具体的应用场景和需求来权衡其优劣。原创 2023-11-07 09:06:04 · 535 阅读 · 3 评论 -
设计模式之责任链模式
在一些业务场景下,为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。在责任链模式中,多个处理器(也就是刚刚定义中说的“接收对象”)依次处理同一个请求。一个请求先经过A处理器处理,然后再把请求传递给B处理器,B处理器处理完后再传递给C处理器,以此类推,形成一个链条。链条上的每个处理器各自承担各自的处理职责,所以叫作职责链模式。原创 2023-11-04 16:40:54 · 618 阅读 · 1 评论 -
设计模式之迭代器模式
分离集合与迭代逻辑:迭代器模式将集合对象与遍历逻辑分离,使得它们可以独立变化。集合对象只需要实现迭代器接口,而客户端只需要通过迭代器进行遍历操作,从而实现了解耦和模块化。统一遍历接口:迭代器模式定义了一组统一的遍历接口,使得客户端可以以相同的方式对待不同类型的集合对象。无论是数组、链表、树状结构还是其他自定义集合,只要它们提供了符合迭代器接口的迭代器对象,就可以使用迭代器模式进行遍历,提高了代码的灵活性和可复用性。原创 2023-11-04 11:50:52 · 929 阅读 · 1 评论 -
设计模式之观察者模式
观察者模式是一种对象行为模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在观察者模式中,主题是通知的发布者,它发出通知时并不需要知道谁是它的观察者,可以有任意数目的观察者订阅并接收通知。观察者模式的核心角色主题(Subject):也称为被观察者或可观察者,它是具有状态的对象,并维护着一个观察者列表。主题提供了添加、删除和通知观察者的方法。观察者(Observer):观察者是接收主题通知的对象。原创 2023-11-02 17:47:32 · 747 阅读 · 0 评论 -
设计模式之模板方法模式
模板方法模式是一种行为型设计模式,它定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。在模板方法模式中,抽象类负责给出算法的轮廓和骨架(由一个或多个模板方法组成),而实现类则负责实现抽象类中所定义的抽象方法和钩子方法。模板方法模式相当于定义了一个操作中的算法的骨架,具体的特定步骤的实现延迟到子类中去定义,使得子类可以不更改一个算法的结构,就可以重新定义算法的某些特定步骤。原创 2023-11-01 11:23:17 · 377 阅读 · 0 评论 -
设计模式之策略模式
策略模式是一种行为型设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以相互替换。策略模式的主要目的是将算法的行为和环境分开,将一系列算法封装在策略类中,并在运行时根据客户端的需求选择相应的算法。策略模式适用于需要使用多种算法,且算法之间可以相互替换的情况。在策略模式中,算法的变化不会影响到使用算法的客户端。避免使用多重条件语句:策略模式通过使用策略类和上下文对象来避免使用多重条件语句,如if-else语句或switch-case语句。原创 2023-10-31 20:44:36 · 385 阅读 · 0 评论 -
设计模式之享元模式
享元模式是一种对象结构型模式,享元模式通过存储这些共享实例对象的地方称为享元池(Flyweight Pool),可以避免频繁的创建销毁对象,大幅度减少需要创建的对象数量,避免大量相似类的开销,从而提高系统资源的利用率。一般和单例模式配合使用,将享元工厂声明为一个单例类来池化享元对象。享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式。减少内存消耗:通过共享对象,避免创建大量重复的对象实例,从而减少内存消耗。提高性能:由于对象被共享,因此可以减少对象的创建和销毁,从而提高系统的性能。原创 2023-10-30 18:38:02 · 255 阅读 · 0 评论 -
设计模式之组合模式
创建灵活且易于扩展的软件产品,符合开闭原则。组合模式使得添加新类型的组件变得容易,因为这不需要修改现有的类或对象。这种灵活性有助于降低系统的复杂性,提高可维护性和可扩展性。简化客户端代码。通过使用组合模式,客户端可以避免处理大量复杂的子系统类。相反,客户端只需要与抽象类或接口进行交互,这有助于简化客户端代码,减少开发人员的工作量。易于维护和修改。由于组合模式使得系统结构清晰且易于理解,因此它有助于提高代码的可维护性和可修改性。原创 2023-10-27 21:17:43 · 493 阅读 · 0 评论 -
设计模式之桥梁模式
桥梁模式(Bridge Pattern)也称为桥接模式,属于结构型模式,它主要目的是通过组合的方式建立两个类之间的联系,而不是继承。桥梁模式将抽象部分与它的具体实现部分分离,使它们都可以独立地变化。桥梁模式的应用场景包括:1.当你想要解耦抽象和具体类时,例如在软件系统中,抽象和具体的功能经常需要变化,而通过使用桥梁模式,你可以将它们解耦,使得你可以在不改变其他部分的情况下更改它们。2.当你需要实现可扩展的软件系统时,桥梁模式可以帮助你实现更灵活的架构,因为你可以在不影响其他部分的情况下添加新的具体实现。原创 2023-10-27 17:35:55 · 512 阅读 · 0 评论 -
设计模式之门面模式
门面模式是一种结构型设计模式,它提供了一个统一的接口,用来访问子系统中的一群接口。它定义了一个高层接口,让子系统更容易使用。这种模式常用于将一个复杂的子系统封装成一个简单的接口,使得客户端可以方便地使用子系统的功能,而不需要了解子系统的具体实现细节。门面模式的特点1.代理模式能够隐藏真实对象的实现细节,使客户端无需知晓真实对象的工作方式和结构。2.通过代理类来间接访问真实类,可以在不修改真实类的情况下对其进行扩展、优化或添加安全措施。3.代理模式实现起来简单,易于扩展和维护,符合面向原创 2023-10-26 16:45:54 · 534 阅读 · 0 评论 -
设计模式之代理模式
代理模式是一种设计模式,它为其他对象提供一种代理以控制对该对象的访问。即用户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。代理模式给某一个对象提供一个代理对象,并由代理对象控制原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。通过代理类,起到了中介隔离作用,代理类除了是客户类和委托类的中介隔离作用之外,我们还可以通过给代理类增加额外的功能来扩展委托类的功能,这样做我们只需要修改代理类,而不需要在修改委托类,符合代码设计的开闭原则。代理类主要负责为委托类预处理消息、过滤消息、把消息原创 2023-10-26 16:27:57 · 731 阅读 · 0 评论 -
设计模式之装饰器模式
上一篇文章中,分享了适配器模式的一些相关知识,在本篇文章将为大家分享装饰器模式,乍一听,适配器和装饰器,是不是有点类似的感觉?其实这两种模式,完全是两种不同的设计模式,下面就开始正题吧,如果我的分享内容对你有用,请关注我的微信公众号吧,后续会持续输出更多的干货内容的哦!装饰器模式是一种结构型设计模式,它允许向一个现有的对象动态添加功能,而不需要修改其源代码。这种模式的核心思想是使用装饰器类来包装原始类,并在保持类方法签名完整性的前提下,提供额外的功能。每个装饰器都包装了原始组件,并添加了新的功能。原创 2023-10-24 21:34:49 · 130 阅读 · 0 评论 -
设计模式之适配器模式
适配器模式(Adapter Pattern)允许将一个类的接口适配成用户所期待的接口,从而使原本因接口不兼容而不能在一起工作的类能够一起工作。适配器模式分为两种类型:对象适配器模式和类适配器模式。对象适配器模式:在这种适配器模式中,适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。类适配器模式:这种适配器模式下,适配器继承自已实现的类。提高类的透明性和复用,现有的类复用但不需要改变。目标类和适配器类解耦,提高程序的扩展性。在很多业务场景中符合开闭原则。原创 2023-10-24 19:52:57 · 645 阅读 · 0 评论 -
设计模式之建造者模式
建造者模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。这种模式将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。举一个简单的例子:假设我们要创建一个复杂的对象,例如一辆汽车,它由多个部分组成,包括引擎、车身、轮胎等。如果我们使用传统的创建方式,我们需要在代码中定义一个汽车类,并在其中定义各个部分的方法和属性。但是,这种方式会使得代码变得非常复杂和难以维护。而使用建造者模式,我们可以将汽车的创建过程分解为多个步骤,每个步骤由一个独立的建造者类负责。首先,我们可以定义一个汽车接口,原创 2023-10-21 23:03:48 · 1055 阅读 · 0 评论 -
设计模式之单例模式
单例模式是一种常用的软件设计模式,其主要作用是保证某一个类只能有一个实例,并提供对该实例的全局访问点。单例模式有三个要点:1.某个类只能有一个实例。2.它必须自行创建这个实例。3.它必须自行向整个系统提供这个实例。单例设计模式在具体实现上有,分为两类:1.饿汉式:在类加载的时候就已经创建好实例,不存在多线程并发访问的问题。2.懒汉式:在类加载的时候不创建实例,当调用 getInstance 方法的时候才判断实例是否存在,如果不存在才创建实例,存在就返回已有的实例。此种方式需要考虑线程安原创 2023-10-20 20:14:35 · 695 阅读 · 0 评论 -
设计模式之原型模式
总的来说,原型模式是一种非常实用的创建型模式,它可以在很多情况下提高代码的效率和复用性,在使用原型模式的时候需要特别注意使用场景。优点与缺点总是相对而言的,在某些场景下,原来的优点可能就变成缺点了,而在另外一些场景,缺点也有可能会变成优点,因此辩证的去理解,从实际出发做合理选择,这是根本目的。原创 2023-10-20 20:15:33 · 982 阅读 · 0 评论 -
设计模式之抽象工厂模式
抽象工厂模式是一种设计程序时的工程方法,前面也说过,方法是为了解决问题的,不是灵丹妙药,用上了就一定很好,是绝不能生搬硬套的,重在理解和灵活运用。隔离了具体类的生成,使得客户端并不需要知道什么被创建。当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象。增加新的产品族很方便,无须修改已有系统,符合开闭原则。增加新的产品等级结构麻烦,需要对原有系统进行较大的修改,甚至需要修改抽象层代码,违背了开闭原则。原创 2023-10-18 21:33:09 · 628 阅读 · 0 评论 -
设计模式之工厂方法模式
工厂方法模式遵循了“开闭原则”,当需要添加新的产品时,只需要增加新的具体工厂和具体产品类,无需修改原有的代码,符合“开放-封闭原则”。工厂方法模式将对象的创建和使用分离,客户端只需要知道抽象工厂和抽象产品,就可以创建所需的产品对象,客户端使用更方便。工厂方法模式可以将客户端与具体类的创建过程分离,使得客户端无需关注对象的创建细节,更无需知道具体产品类的类名,客户端可以更加专注于自身的业务逻辑。工厂方法模式通过多态性,使得工厂方法可以创建不同的具体产品对象,提高了系统的灵活性。原创 2023-10-16 22:22:34 · 705 阅读 · 0 评论 -
设计模式之简单工厂模式
简单工厂模式是一种属于创建型模式的设计模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式的核心是一个工厂类,它负责实现创建所有产品实例的内部逻辑。这个工厂类提供了一个或多个静态的工厂方法,根据参数的不同返回不同类的实例。这些被创建的实例通常都具有共同的父类。易于扩展:由于简单工厂模式中工厂类的方法是静态的,所以可以在不修改原有代码的基础上增加新的产品类,只需要在新的产品类中实现工厂类所定义的接口即可。原创 2023-10-15 20:54:39 · 720 阅读 · 0 评论 -
设计模式之六大设计原则
最后,还是要强调一点,设计原则和设计模式绝对不是灵丹妙药,全用上就是好。当然设计原则有人理解是六种,也有理解是七种的。不管理解是几种,设计模式和设计原则属于方法论的内容,是要帮助我们解决具体的业务问题的,当然需要具体问题具体对待。原创 2023-10-14 21:15:53 · 644 阅读 · 0 评论 -
设计模式之基础:UML类图怎么看?
类是具有相似结构,属性和行为的一组对象的统一描述,UML类图就是用一系列如箭头,实线,虚线等图形符号来描述类之间关系的图形。行话说,一图胜千言,在实际业务设计开发过程中,清晰的UML类图可以快速让我们搞清楚类之间的关系,也方便于沟通交流。先要看懂UML类图,要先理解类图描述了类之间的哪几种关系,要想牢固掌握,可以把这六种关系分成三组,对比着理解记忆,继承与实现,聚合与组合,关联与依赖。那么UML是用什么图形化符号来描述这些关系呢?原创 2023-02-04 17:37:08 · 2047 阅读 · 0 评论