编一个故事快速记住上面的Java 设计模式以及特点

Java 中的设计模式是为了解决常见的软件设计问题而提炼出来的最佳实践。它们可以帮助开发人员以更高效、更易维护的方式构建应用程序。设计模式通常分为三大类:创建型模式结构型模式行为型模式

1. 创建型模式

创建型模式关注对象的创建过程,旨在使这个过程变得更加灵活和适应性强。

  • 单例模式 (Singleton)

    • 特点:确保一个类只有一个实例,并提供全局访问点。
    • 使用场景:需要控制某个类的实例数,通常是全局配置或资源管理。
  • 工厂方法模式 (Factory Method)

    • 特点:定义一个创建对象的接口,但由子类决定实例化的具体类。
    • 使用场景:当类的实例化逻辑复杂或者客户端不需要知道对象的具体类型时。
  • 抽象工厂模式 (Abstract Factory)

    • 特点:提供一个创建相关或依赖对象的接口,而无需指定具体类。
    • 使用场景:需要创建一系列相关的对象,而且它们之间有依赖关系。
  • 建造者模式 (Builder)

    • 特点:将复杂对象的构建过程与表示分离,使得同样的构建过程可以创建不同的表示。
    • 使用场景:需要创建复杂对象,并且需要有多个步骤来完成构造时。
  • 原型模式 (Prototype)

    • 特点:通过复制现有实例来创建新对象,而不是通过类的实例化。
    • 使用场景:当直接创建对象的代价较高时,可以通过复制原型来提高效率。

2. 结构型模式

结构型模式关注类和对象的组合,帮助程序员确保这些结构化的组合方式满足设计的需求。

  • 适配器模式 (Adapter)

    • 特点:将一个类的接口转换成客户希望的另一个接口,兼容不兼容的接口。
    • 使用场景:系统中存在不兼容的接口,但需要一起工作时。
  • 桥接模式 (Bridge)

    • 特点:将抽象部分与实现部分分离,使它们可以独立变化。
    • 使用场景:需要跨多个维度变化的情况,如平台和实现细节的分离。
  • 组合模式 (Composite)

    • 特点:将对象组合成树形结构以表示“部分-整体”的层次结构。
    • 使用场景:需要表示对象的部分-整体层次结构时,比如文件系统的目录和文件。
  • 装饰者模式 (Decorator)

    • 特点:动态地给对象添加职责,而不影响其他对象。
    • 使用场景:在不改变原类文件和使用继承的情况下,动态扩展对象的功能。
  • 外观模式 (Facade)

    • 特点:为子系统中的一组接口提供一个一致的接口,使得子系统更加易用。
    • 使用场景:简化系统的接口,使得系统易于使用。
  • 享元模式 (Flyweight)

    • 特点:通过共享大量细粒度对象,减少内存占用。
    • 使用场景:需要大量相似对象的场景,特别是内存受限的环境中。
  • 代理模式 (Proxy)

    • 特点:为其他对象提供一种代理以控制对这个对象的访问。
    • 使用场景:需要控制访问某个类的情况下,比如远程代理、安全代理等。

3. 行为型模式

行为型模式专注于类或对象之间的交互和职责分配,帮助定义复杂的流程或控制对象间的通讯。

  • 策略模式 (Strategy)

    • 特点:定义一系列算法,将每个算法封装起来,并且使它们可以互换。
    • 使用场景:需要在运行时选择算法,或者算法的实现需要独立于使用它的环境时。
  • 模板方法模式 (Template Method)

    • 特点:定义算法的框架,将某些步骤延迟到子类中实现。
    • 使用场景:在多个类中存在相同的逻辑结构,但某些步骤在不同类中不同。
  • 观察者模式 (Observer)

    • 特点:定义对象间的一对多依赖,当一个对象改变状态时,所有依赖它的对象都会收到通知并自动更新。
    • 使用场景:需要广播通知或需要自动通知其他对象变化的场景。
  • 迭代器模式 (Iterator)

    • 特点:提供一种方法来顺序访问聚合对象中的各个元素,而不暴露其内部结构。
    • 使用场景:需要遍历集合对象时。
  • 责任链模式 (Chain of Responsibility)

    • 特点:将请求沿着处理链传递,直到有一个对象处理它为止。
    • 使用场景:当有多个对象可以处理一个请求时,避免请求发送者和接受者的耦合。
  • 命令模式 (Command)

    • 特点:将请求封装成对象,以便使用不同的请求、队列或日志来参数化其他对象。
    • 使用场景:需要将操作封装成独立对象,并且支持撤销、重做和命令队列。
  • 备忘录模式 (Memento)

    • 特点:在不破坏封装性的前提下,捕获并保存对象的内部状态,以便恢复到之前的状态。
    • 使用场景:需要保存和恢复对象的状态时,尤其是实现撤销功能。
  • 状态模式 (State)

    • 特点:允许对象在内部状态改变时改变其行为。
    • 使用场景:对象的行为依赖于其状态,并且需要在运行时改变行为的场景。
  • 访问者模式 (Visitor)

    • 特点:分离算法与对象结构,使得新算法可以不改变结构的前提下被添加。
    • 使用场景:需要对一个对象结构中的元素执行多种不同且不相关的操作时。
  • 中介者模式 (Mediator)

    • 特点:用一个中介对象来封装一系列对象的交互,避免对象之间的直接通信,减少类间依赖。
    • 使用场景:需要集中控制复杂的对象交互或需要减少类间的直接依赖时。
  • 解释器模式 (Interpreter)

    • 特点:为语言创建解释器,定义语言的语法和解释这个语法的方式。
    • 使用场景:需要为特定类型问题创建语言并解释表达式时,比如计算器。

总结

Java 设计模式通过提供经过验证的解决方案,使开发人员能够构建更具可维护性、灵活性和可扩展性的应用程序。掌握这些模式可以帮助开发人员更好地应对复杂的软件设计挑战。

一个神奇的编程王国

在一个遥远的编程王国,住着三种神奇的生物:创建者结构师行为者。他们各自拥有独特的力量,帮助国王建造和管理这个繁荣的王国。

创建者的魔法

创建者族群专注于如何创造事物,确保它们的存在方式灵活且高效。他们的领袖是单例(Singleton),他拥有一个神奇的权杖,只允许他自己在王国中唯一存在。这个权杖也是国王管理整个王国的关键。

有一天,国王需要一座奇特的城堡,但却不确定该如何建造。他向工厂方法(Factory Method)求助,这个大师可以根据需求创造出各种不同的建筑物。他的弟弟抽象工厂(Abstract Factory),则专注于同时建造多个相关建筑,如同一座完整的村庄。

有一次,国王希望建造一座复杂的宫殿,建造者(Builder)登场了。他能够将每个房间和塔楼一步步地精细构建起来,使得整个宫殿美轮美奂。还有一个神秘的原型(Prototype),他有着复制自己任何一部分的能力,只需一次轻轻的触碰,就能创造出与原物一模一样的复制品。

结构师的智慧

结构师族群擅长组织和组合现有的资源,使它们能更好地协同工作。**适配器(Adapter)**是他们的首领,他可以将两种完全不同的物体组合在一起,让它们和谐共处。

在河的对岸,**桥接(Bridge)**家族的成员通过架设桥梁,帮助各个区域实现了独立的变化,而不影响彼此。

有一天,国王需要将森林变成一个巨大而和谐的王国,**组合(Composite)**便利用树木创造了一个有机的“部分-整体”结构,让每一棵树和森林完美结合在一起。

**装饰者(Decorator)**也是一位高手,他总能在不改变物体本质的情况下,为它们增添新的装饰,使得王国内的一切看起来更加美丽。

有时,国王需要面对许多复杂的事情,**外观(Facade)**就会出现。他精简了整个系统的接口,让国王可以更轻松地管理整个王国。

在边境地区,**享元(Flyweight)**家族通过共享资源,节省了大量的内存,让王国的边境变得井然有序。而在国王的宫殿内,**代理(Proxy)**家族则控制着对重要资源的访问,确保一切都在掌控之中。

行为者的艺术

最后是行为者族群,他们专注于对象之间的互动,确保王国的每一个居民都能够和谐共处。**策略(Strategy)**大师可以选择最合适的算法,根据当前情况做出最佳的决策。

在制定计划时,**模板方法(Template Method)**总会出现,他定义了所有行动的框架,只是将某些细节留给他的子类们来实现。

国王的每个命令都会被**命令(Command)**家族忠实地执行,他们将请求封装成对象,可以随时被撤销、重做,或排入队列等待执行。

当王国内的某个区域发生变化时,**观察者(Observer)**立即通知所有依赖它的地方,让他们自动更新,确保王国的每个角落都同步变化。

为了能有效地访问王国中的所有资源,**迭代器(Iterator)**总是按照顺序来遍历对象,并确保不会暴露它们的内部结构。

国王的命令通过**责任链(Chain of Responsibility)传递下去,直到找到最合适的执行者,而中介者(Mediator)**则作为各方沟通的桥梁,避免了过多的直接交流,简化了整个流程。

当国王需要审视整个王国的状态时,**备忘录(Memento)**记录了每一刻的情况,随时准备恢复到任何一个过去的状态。

在复杂的法律体系中,**状态(State)帮助国王根据不同的情境改变他的判决行为,而访问者(Visitor)**则定期巡视王国中的每一个部分,执行不同的任务。

最后,**解释器(Interpreter)**通过解释王国的语言和法令,确保所有居民都能理解并遵循国王的意志。

结语

在这个神奇的编程王国中,创建者们负责构建,结构师们负责组织,而行为者们则确保一切井然有序。通过他们的共同努力,王国不断繁荣昌盛,成为了编程世界中一颗璀璨的明珠。

在一个奇妙的编程王国里,住着五位创建型设计模式的精灵,每位都有独特的魔力和性格。为了保护王国,他们齐心协力,创造了各种神奇的物品。

单例模式 (Singleton)

故事开始于单例精灵Singleton,他是一个孤独但强大的守护者,住在一座只有他一个人的高塔里。他的魔法可以确保整个王国中只有他一个实例,这样所有的全局配置和资源管理都不会混乱。每当王国需要重要的配置或资源时,Singleton精灵就会出现在大家面前,提供唯一的解决方案。

工厂方法模式 (Factory Method)

接着,工厂方法精灵Factory Method出场了。他拥有一座神奇的工厂,这个工厂可以根据不同的需求生产出各种各样的物品。工厂方法精灵自己不直接创造物品,而是定义了一个创建对象的接口,由他的子类来决定具体的生产过程。这样,每当王国需要新的物品时,工厂方法精灵的子类们就会根据情况,灵活地决定如何生产这些物品。

抽象工厂模式 (Abstract Factory)

然后,抽象工厂精灵Abstract Factory来到了故事中。她拥有一座更大的工厂,不仅能生产单一的物品,还能创建一系列相关或依赖的物品。每次需要一整套工具或武器时,Abstract Factory精灵都会提供一个接口,通过这个接口,她的子工厂们会无缝地协作,制造出一整套完整的装备。

建造者模式 (Builder)

建造者精灵Builder是个细心而有条理的工匠,他专注于将复杂的物品逐步构建出来。每次当王国需要一个复杂的物品时,比如一座城堡或一艘船,Builder精灵会分阶段进行建设。他首先打好基础,然后一步步完善细节。无论是石墙的坚固程度还是船帆的风力,他都一丝不苟,确保每个步骤都完美无缺。

原型模式 (Prototype)

最后,原型精灵Prototype登场了。他有一个神奇的复制魔法,可以通过复制现有的实例来创造新对象。每当王国需要大量相同的士兵或工具时,Prototype精灵只需要找到一个现成的样本,然后使用他的魔法,快速复制出无数个相同的对象。这不仅节省了时间,还避免了从头开始创建的高成本。

总结

在编程王国里,这五位精灵各司其职,守护着王国的安宁与繁荣。每当王国面临挑战时,他们都会齐心协力,用他们的魔法和智慧,创造出各种神奇的物品,确保王国的平安与繁荣。

通过这个故事,希望你能更容易记住这些创建型设计模式及其特点。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值