![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式学习
文章平均质量分 88
小白开始学习设计模式
咖啡程序员
自学编程的心得分享,以及参加工作后的总结以及实战分享,希望能帮助自学编程的小伙伴们,我们一起学习进步成长!
展开
-
设计模式之-桥梁模式,快速掌握桥梁模式,通俗易懂的讲解桥梁模式以及它的使用场景
Town是抽象部分的基类,它包含了对桥实现部分的引用,并定义了抽象的访问方法visit()。Shape是抽象部分的基类,它包含了对实现部分的引用,并定义了抽象的绘制方法draw()。小镇代表了整个系统,而抽象部分是桥的结构和功能,实现部分则是具体的木桥和石桥。设计师就是桥梁模式的核心,他将抽象部分和实现部分分离,并协调它们的工作。镇长找来一个桥梁设计师,设计师告诉镇长,他可以设计一座新桥的抽象部分,即桥的结构和功能,不管是木桥还是石桥都可以。某天,小镇的镇长决定要修建一座新的桥,以便提供更多的通行便利性。原创 2023-12-27 13:36:02 · 1364 阅读 · 0 评论 -
设计模式之-享元模式,快速掌握享元模式,通俗易懂的讲解享元模式以及它的使用场景
享元模式的目标是通过共享对象来减少内存使用和提高性能。享元模式适用于需要创建大量相似对象的情况。享元模式通过将对象的共享状态外部化,使得多个对象可以共享相同的状态,从而减少了对象的数量。共享状态是不可变的,如果一个对象的状态发生改变,可能会影响到其他对象。享元模式的核心是一个工厂类,用于管理和共享对象。工厂类通过对象池来存储共享的对象,使用合适的数据结构(如HashMap)来实现快速查找和存储。客户端通过工厂类获取共享对象,并可以根据需要设置对象的非共享状态。原创 2023-12-26 09:35:58 · 1480 阅读 · 0 评论 -
设计模式之-解释器模式,快速掌握解释器模式,通俗易懂的讲解解释器模式以及它的使用场景
总结来说,解释器模式适用于需要解析和执行简单语法规则的场景,并且提供了一种灵活、可扩展的方式来处理复杂的表达式。通过将问题表示为语言规则。原创 2023-12-26 09:24:27 · 1181 阅读 · 0 评论 -
设计模式之-状态模式,快速掌握状态模式,通俗易懂的讲解状态模式以及它的使用场景
状态模式适用于当对象的行为取决于其内部状态,并且状态可能在运行时发生变化的情况。它可以帮助我们实现清晰的状态转换逻辑,提高代码的可维护性和扩展性。原创 2023-12-25 16:58:01 · 905 阅读 · 1 评论 -
设计模式之-访问者模式,快速掌握访问者模式,通俗易懂的讲解访问者模式以及它的使用场景
总体而言,访问者模式适用于元素对象结构相对稳定,但需要频繁添加新的操作的场景。如果元素对象结构经常变化或者需要添加新的元素类,使用访问者模式可能会增加代码的复杂性。因此,在使用访问者模式时需要根据具体情况进行权衡和设计。原创 2023-12-25 16:51:01 · 1301 阅读 · 0 评论 -
设计模式之-备忘录模式,快速掌握备忘录模式,通俗易懂的讲解备忘录模式以及它的使用场景
备忘录模式的核心思想是通过备忘录对象来存储和恢复对象的状态,以实现状态的保存和恢复功能。它的应用场景包括各种需要保存和恢复状态的情况,比如编辑器的撤销功能、游戏中的存档功能等。通过备忘录模式,我们可以在不破坏封装性的前提下,轻松实现对象状态的保存和恢复。原创 2023-12-25 15:07:56 · 1177 阅读 · 0 评论 -
设计模式之-门面模式,快速掌握门面模式,通俗易懂的讲解门面模式以及它的使用场景
当谈到门面模式(Facade Pattern)时,我们可以将其比作一个建筑物的门面,门面是人们与建筑物进行交互的入口,隐藏了内部的复杂结构,使得人们可以轻松地与建筑物交互而不必了解其内部的复杂性。现在,你只需要告诉系统你想要的咖啡类型,比如浓缩咖啡、拿铁或卡布奇诺,系统会自动处理所有的细节并将咖啡制作好,然后直接交给你。而咖啡点单系统(门面)则提供了一个简化的接口,封装了这些子系统的复杂性,使得顾客可以轻松地购买咖啡而不必了解内部的实现细节。简单来说,门面模式提供了一个统一的接口,用于简化复杂系统的访问。原创 2023-12-25 13:54:22 · 1307 阅读 · 0 评论 -
设计模式之-观察者模式,快速掌握观察者模式,通俗易懂的讲解观察者模式以及它的使用场景
通过观察者模式,天气预报中心和居民之间建立了一种松散的依赖关系,使得天气预报中心能够方便地通知居民们最新的天气情况,居民们也能够根据天气情况做出适当的调整。当谈到设计模式中的观察者模式(Observer Pattern)时,它是一种行为型设计模式,用于在对象之间建立一种一对多的依赖关系,当一个对象的状态发生改变时,它的所有依赖者都会得到通知并自动更新。然后,我们定义一个具体的天气预报中心(ConcreteWeatherCenter)类,实现了主题接口,并维护了一个观察者列表。原创 2023-12-25 10:54:33 · 2800 阅读 · 0 评论 -
设计模式之-组合模式,快速掌握组合模式,通俗易懂的讲解组合模式以及它的使用场景
组件是表示文件和文件夹的抽象类,叶子是表示文件的类,容器是表示文件夹的类。以生活中的文件系统为例,文件系统由文件夹和文件组成,文件夹可以包含子文件夹和文件,而文件是最基本的组成单元。组合模式可以用来表示文件系统的层次结构,使得用户可以统一地处理文件和文件夹,而不必关心它们的具体类型。在Main类的main方法中,我们创建了文件和文件夹的实例,并使用add方法将它们组合成一个文件系统的层次结构。通过组合模式,我们可以以一种统一的方式处理文件和文件夹对象,而不必关心它们的具体类型。原创 2023-12-25 09:26:30 · 1123 阅读 · 0 评论 -
设计模式之-迭代器模式,快速掌握迭代器模式,通俗易懂的讲解迭代器模式以及它的使用场景
其中,Iterator接口定义了迭代器的方法hasNext()和next(),Aggregate接口定义了聚合对象的方法createIterator()。最后,我们使用迭代器的hasNext和next方法来遍历聚合对象中的元素,并将每个元素打印出来。在这个例子中,书是聚合对象,每一页是一个元素,而你使用的翻页动作就是迭代器。迭代器负责定义访问和遍历聚合对象中元素的接口,聚合对象则负责提供创建迭代器的方法。通过这样的实现,我们可以在Java中使用迭代器模式来遍历聚合对象,实现了代码的灵活性和可扩展性。原创 2023-12-25 09:22:28 · 983 阅读 · 0 评论 -
设计模式之-适配器模式,快速掌握适配器模式,通俗易懂的讲解适配器模式以及它的使用场景
在现实生活中,适配器模式的例子可以是使用不同类型的插头连接电器设备。在客户端代码中,首先创建了一个适配器对象musicPlayer,并通过适配器对象调用目标接口的方法来播放音乐。适配器模式允许已有的类或接口与其他不兼容的类或接口进行交互,提高了代码的复用性和灵活性。在上面的示例中,MusicPlayer是目标接口,定义了音乐播放器的方法。Mp3Adapter是适配器类,实现了目标接口,并持有适配者类的引用。在适配器类的方法中,调用适配者类的方法来完成适配。原创 2023-12-23 09:01:16 · 1058 阅读 · 0 评论 -
设计模式之-策略模式,快速掌握策略模式,通俗易懂的讲解策略模式以及它的使用场景
在现实生活中,策略模式的例子可以是支付方式的选择。这些支付方式都是不同的算法,但用户不需要关心具体的实现细节,只需要选择合适的支付方式。接着创建了一个猫对象cat,并设置了猫叫声的策略,再调用猫对象的makeSound方法,输出猫的叫声。在上面的示例中,SoundStrategy是抽象策略,定义了叫声策略的方法。策略模式是一种行为型设计模式,它定义了一系列的算法,并将每个算法封装到独立的策略类中,使它们可以相互替换。通过使用策略模式,可以根据不同的情况选择不同的策略,而不需要改变环境类的代码。原创 2023-12-23 08:51:40 · 883 阅读 · 0 评论 -
设计模式之-装饰模式,快速掌握装饰模式,通俗易懂的讲解装饰模式以及它的使用场景
在客户端代码中,首先创建了一个浓缩咖啡对象espresso,然后用Milk装饰了该咖啡对象,再用Sugar装饰了装饰后的咖啡对象。最后,通过调用装饰后的咖啡对象的方法,获取咖啡的费用和描述。CoffeeDecorator是抽象装饰器,实现了咖啡的方法,并包含一个咖啡对象的引用。Milk和Sugar是具体装饰器,分别继承了抽象装饰器,并在其中扩展了咖啡的功能。在现实生活中,装饰模式的例子可以是穿衣服。一个人(原始对象)可以穿不同的衣服(装饰对象)来增加新的功能或美化外观,但人的本质并没有改变。原创 2023-12-22 21:59:11 · 525 阅读 · 0 评论 -
设计模式之-责任链模式,快速掌握责任链模式,通俗易懂的讲解责任链模式以及它的使用场景
最后,根据不同的请假天数,输出不同的处理结果。Supervisor、Manager和CEO是具体处理者,分别实现了抽象处理者的处理请假申请方法,并在其中判断是否能够处理请求,如果不能处理则将请求传递给下一个处理者。当员工提交请假申请时,请求会从最高层级的审批人员开始传递,如果一个审批人员无法处理请求,则将请求传递给下一个审批人员,直到有人能够处理为止。每个接收者都包含对下一个接收者的引用,形成一个链条,当请求从链条的头部开始传递时,每个接收者都有机会处理请求,直到有一个接收者能够处理为止。原创 2023-12-22 21:55:24 · 712 阅读 · 0 评论 -
设计模式之-命令模式,快速掌握命令模式,通俗易懂的讲解命令模式以及它的使用场景
在上面的示例中,Command是抽象命令接口,定义了命令的执行方法execute。OpenTVCommand和CloseTVCommand是具体命令类,分别实现了抽象命令接口,并在execute方法中调用接收者对象的相应方法。在现实生活中,命令模式的例子可以是遥控器。遥控器上的按钮(客户端)发送命令(请求)给电视(接收者),电视根据命令进行相应的操作。命令模式是一种行为型设计模式,它将请求封装成一个对象,从而使得可以用不同的请求对客户进行参数化,并且能够支持请求的排队执行、记录日志、撤销和重做等操作。原创 2023-12-22 21:51:46 · 1236 阅读 · 0 评论 -
设计模式之-中介者模式,快速掌握中介者模式,通俗易懂的讲解中介者模式以及它的使用场景
ConcreteChatRoom是具体中介者类,实现了抽象中介者接口,并在sendMessage方法中处理用户发送的消息。中介者模式将对象之间的交互行为集中在一个中介者对象中,降低了对象之间的耦合度,使其更易于理解和维护。User是抽象同事类,定义了用户的名称和中介者对象。OrdinaryUser和VipUser是具体同事类,分别实现了抽象同事类的发送消息方法,并在其中调用中介者对象的方法。通过使用中介者模式,可以将对象之间的通信行为集中在一个中介者对象中,减少了对象之间的直接依赖和耦合。原创 2023-12-22 21:47:42 · 556 阅读 · 0 评论 -
设计模式之-原型模式,快速掌握原型模式,通俗易懂的理解原型模式以及使用场景
原型模式是一种创建型设计模式,它允许通过复制现有对象来创建新的对象,而无需通过调用构造函数来创建。原型模式通过克隆操作来创建对象,提供了一种更加灵活和高效的对象创建方式。在现实生活中,原型模式的例子可以是制作玩具的模具。模具(原型对象)定义了玩具的形状和细节,而根据模具可以快速复制出多个相同的玩具(克隆对象)。原创 2023-12-22 21:43:18 · 947 阅读 · 0 评论 -
设计模式之-代理模式,快速掌握理解代理模式,以及代理模式的使用场景
代理模式是一种结构型设计模式,它允许通过创建一个代理对象来控制对另一个对象的访问。代理对象充当客户端与目标对象之间的中介,可以在不改变目标对象的情况下,增加额外的功能或提供额外的控制。在现实生活中,代理模式的例子可以是一位明星的经纪人。明星(目标对象)负责演艺工作,而经纪人(代理对象)负责处理合同、安排日程、接待粉丝等工作。经纪人在不改变明星的情况下,为明星提供额外的服务和保护。原创 2023-12-22 21:32:02 · 405 阅读 · 0 评论 -
设计模式之-建造者模式通俗易懂理解,以及建造者模式的使用场景和示列代码
建造者模式是一种创建型设计模式,它可以将复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。它允许客户端通过指定需要创建的对象类型和配置选项来构建对象,而无需知道具体的构建细节。使用建造者模式的主要目的是将对象的构建过程封装在一个独立的建造者类中,使得构建过程可以灵活地组合,而不需要对客户端暴露具体的构建细节。这样可以提高代码的可读性、可维护性和可扩展性。原创 2023-12-22 21:17:55 · 1244 阅读 · 0 评论 -
设计模式之-模板方法模式,通俗易懂快速理解,以及模板方法模式的使用场景
当谈到模板方法模式时,在面向对象的编程中,它是一种行为设计模式。模板方法模式定义了一个操作中的算法骨架,将一些步骤延迟到子类中实现,使得子类可以在不改变算法结构的情况下重新定义算法中的某些步骤。使用模板方法模式的主要目的是将通用的算法步骤抽象到父类中,然后通过具体的子类来实现这些步骤的具体细节。这样可以避免代码的重复,并且使得算法的结构更加清晰可见。原创 2023-12-22 20:29:19 · 1025 阅读 · 0 评论 -
设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式,每一种模式的概念、使用场景和优缺点。
当谈到工厂模式时,通常指的是三种常见的工厂模式:简单工厂模式、工厂方法模式和抽象工厂模式。下面我将详细讲解每一种模式的概念、使用场景和优缺点。概念:抽象工厂模式提供一个接口,用于创建一系列相关或相互依赖的对象,而不需要指定具体的类。使用场景:当需要创建一组相关对象的产品族时,可以使用抽象工厂模式。优点:符合开闭原则,新增产品族只需要添加相应的具体工厂类,不需要修改现有代码。缺点:增加了系统的复杂度,每个产品族都需要一个对应的具体工厂类。原创 2023-12-22 20:21:30 · 1841 阅读 · 0 评论 -
设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列
当谈论面向对象设计原则时,常常提到 SOLID 原则,这是一组面向对象设计的基本原则,旨在帮助开发人员设计出灵活、可维护和可扩展的软件系统。下面我将详细解释 SOLID 原则的原理,使用场景,以及代码示例。单一职责原则指的是一个类或模块应该有且只有一个职责。换句话说,一个类应该只负责一个逻辑单元或功能。这样做有助于提高代码的可读性、可维护性和可测试性,并降低类之间的耦合度。原创 2023-12-22 10:57:22 · 980 阅读 · 0 评论 -
设计模式之-单列设计模式,5种单例设计模式使用场景以及它们的优缺点
谈到单例设计模式时,以下是几种常见的实现方式。以及它们的优缺点需要根据具体的需求和场景来选择适合的单例实现方式。考虑到线程安全性、延迟加载、性能以及代码的简洁程度等因素,选择最合适的单例实现方式对于保证应用的正确性和性能是很重要的。原创 2023-12-22 09:54:56 · 1216 阅读 · 0 评论