浅谈设计模式

这篇具有很好参考价值的文章主要介绍了浅谈设计模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、设计模式简介

设计模式就是面对一些问题的最佳解决方案。众多软件开发人员在软件的开发过程中面临一些常见问题给出的解决方案,经过长期的验证和总结修正,形成了相对比较固定并且具有广泛适用性的解决模式。
设计模式主要是为了提高代码的重用性、让代码跟容易理解、保证代码的可靠性。设计模式的原则是面向接口编程而不是面向实现编程,优先使用组合对象而不是继承,尽可能复用已有类和对象。

二、设计模式分类

设计模式的参考书中总共提及23种设计模式,按照设计模式所解决的问题,这些模式可以分为创建型模式、结构型模式和行为型模式。

1.创建型模式(Creational Patterns)

在代码中优先需要创建对象,然后才能进行其他行为。创建对象,有可能需要隐藏创建逻辑、有可能整个应用只想创建一个对象,也有可能对象非常复杂。所以这些设计模式主要是为了满足以上创建对象时特殊需求的解决方案。

  • 工厂模式(Factory Pattern)
  • 抽象工厂模式(Abstract Factory Pattern)
  • 单例模式(Singleton Pattern)
  • 建造者模式(Builder Pattern)
  • 原型模式(Prototype Pattern)

2.结构型模式(Structural Patterns)

实际开发工作中有很多时候,需要在已有的功能上进行开发工作,这样我们就需要尽可能复用已有的类、对象结构、接口等。结构型的模式主要解决如何构建灵活且可复用的类、对象、接口等,并利用组合、包装等方式复用已有功能。

  • 适配器模式(Adapter Pattern)
  • 桥接模式(Bridge Pattern)
  • 过滤器模式(Filter、Criteria Pattern)
  • 组合模式(Composite Pattern)
  • 装饰器模式(Decorator Pattern)
  • 外观模式(Facade Pattern)
  • 享元模式(Flyweight Pattern)
  • 代理模式(Proxy Pattern)

3.行为型模式(Creational Patterns)

这些模式关注对象之间的通信和交互,旨在解决对象之间的责任分配和算法的封装。

  • 责任链模式(Chain of Responsibility Pattern)
  • 命令模式(Command Pattern)
  • 解释器模式(Interpreter Pattern)
  • 迭代器模式(Iterator Pattern)
  • 中介者模式(Mediator Pattern)
  • 备忘录模式(Memento Pattern)
  • 观察者模式(Observer Pattern)
  • 状态模式(State Pattern)
  • 空对象模式(Null Object Pattern)
  • 策略模式(Strategy Pattern)
  • 模板模式(Template Pattern)
  • 访问者模式(Visitor Pattern)

三、创建型模式

1.工厂模式

2.抽象工厂模式

3.单例模式

单例模式确保一个类只有一个实例,并提供一个全局访问点来访问该实例。这种模式涉及的类负责创建自己的对象,并确保只有单个对象被创建。

4.建造者模式

建造者模式使用多个简单的对象一步步构建一个复杂对象。用于将复杂的构建与其表现相分离,使得同样的构建过程可以创建不同表现的对象。一些组件常用建造者模式进行构建,比如Guava cahce组件的构建。

5.原型模式

原型模式用于高性能的创建重复的对象。利用已有的一个原型对象,快速地生成和原型对象一样的实例。比如Java中的Object clone()方法。

四、结构型模式

1.适配器模式

在软件系统中,需要将一些现有的对象放到新环境中,但是现有的对象不能满足新环境的接口。适配器模式作为两个不兼容接口的桥梁,将现有对象的接口转化成新环境的另外一个接口。

2.外观模式

外观模式主要是为了降低访问复杂系统的内部子系统时的复杂度,提供一个简化的接口用于客户端调用。

3.装饰器模式

装饰器模式主要是不使用继承的情况下,给一个类添加额外的一些功能。

4.桥接模式

桥接模式用于把抽象部分和实现部分分离,使得二者解耦可以独立变化。比如java的日志体系通过桥接模式将抽象的日志接口与具体实现进行了解耦。

5.代理模式

代理模式主要是想在访问一个类时做一些控制时,在访问者和真实对象间新增一个中间层。代理模式并不会增强被代理对象的功能(装饰器模式),也不会改变被代理对象的接口(适配器模式)。

6.组合模式

组合模式主要用于解决树型结构中的问题,可以象处理简单元素一样来处理复杂元素。这种模式中创建了一个包含自己对象数组的类,用于表示层次结构。比如目录层次非常适用于组合模式进行表示和操作。
浅谈设计模式,Java,设计模式

7.过滤器模式

过滤器模式使用不同的标准过滤一组对象,通过逻辑运算以解耦的方式把他们连接起来,可以通过结合多个标准来获取单一标准。比如查询结果可以通过一系列标准进行结果过滤。

8.享元模式

五、行为型模式

1.责任链模式

责任链模式将请求的处理者连接成一条链,请求发送者将请求发送到这个处理链,每个处理者处理完成后会将此请求传递给下一个处理者。应用实例如Apache Tomcat对Encoding的处理、Structs2的拦截器等。

2.命令模式

命令模式是将一个请求封装成一个对象,从而用不同的请求对客户进行参数化。此模式可以将行为请求者与行为实现者进行解耦,实现二者的松耦合。

3.迭代器模式

迭代器模式就是在无须暴露出来内部表示的情况下,提供一种顺序访问一个聚合对象内部各个元素。此模式在Java中非常常见,比如Java中常用的集合类都可以通过迭代器模式进行内部元素的访问。

4.模板模式

模板模式是针对一些通用的操作步骤,定义一个操作的步骤骨架,将其中一些步骤延迟到子类中。此模式是的子类可以不改变整体结构,只需要重新定义其中一些步骤即可改变一些功能。

5.策略模式

策略模式定义一系列算法或者策略,使他们在运行过程中可以互相替换,而不用修改代码。

6.观察者模式

观察者模式主要是解决对象间一对多的依赖关系。当一个对象状态变化时,需要给其他对象通知。这样可以实现对象的易用性和低耦合。

7.访问者模式

访问者模式主要是将稳定的数据结构和易变的操作进行解耦。例如ASM中使用访问者模式对字节码进行修改。

8.解释器模式

9.中介者模式

10.备忘录模式

11.状态模式

12.空对象模式

总结

设计模式是在代码实践过程中总结出来应对特定问题的最佳解决方案。这些模式可以帮助开发者实现代码的复用、解耦和易于理解。


参考链接

1.设计模式文章来源地址https://www.toymoban.com/news/detail-825915.html

到了这里,关于浅谈设计模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java设计模式 (三) 代理设计模式

    什么是代理设计模式? 代理设计模式是一种结构型设计模式,它允许创建一个代理对象,用于控制对其他对象的访问。代理模式通常用于在访问对象时添加一些附加操作,而不是直接访问真实对象。代理模式可以在不改变原始类代码的情况下,通过引入代理类来增强功能。 代

    2024年02月12日
    浏览(43)
  • Java设计模式 (一) 模板方法设计模式

    什么是模板方法设计模式? 模板方法设计模式是一种行为型设计模式,它定义了一个算法的骨架,并将一些步骤的具体实现延迟到子类中。模板方法模式可以帮助确保在算法的不同部分中保持一致性,同时也允许子类根据需要进行具体实现。 模板方法模式的关键特点包括:

    2024年02月12日
    浏览(45)
  • java设计模式---策略模式

    策略设计模式是一种行为设计模式。当在处理一个业务时,有多种处理方式,并且需要再运行时决定使哪一种具体实现时,就会使用策略模式。 策略模式的类图: 在支付业务中,有三种付款方式,程序运行时使用哪种方式由用户选择,根据用户选择执行不同的逻辑。 首先,

    2024年02月10日
    浏览(45)
  • Java设计模式-桥接模式

    桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。 这个概念听着那是相当拗口了,其实通过例子解释后,就能很好的理解了。 下面先看一个例子,这个例子表现了手机与手机软件之间的关系 2.1HandsetSoft类 这个类是手机软件的抽象类 2.2HandSetGame类 这个是

    2024年02月16日
    浏览(43)
  • Java设计模式-装饰模式

    装饰模式在Java领域是一种常见的设计模式,它能够在不改变对象原有结构的情况下,动态地为对象添加新的功能。它通过封装原有对象,在运行时动态地为对象添加新的行为或者修改原有行为,以扩展对象的功能。这种方式避免了继承的静态特性,让对象的行为可以根据需要

    2024年02月04日
    浏览(45)
  • Java设计模式——工厂模式

    目录 设计模式系列文章 前言 一、简单工厂模式 二、工厂方法模式 三、抽象工厂模式 总结 最近在学习一些Java设计模式的概念,设计模式诞生的目的,我认为是可以使得写出的代码具有更好的逻辑性,减少了大量冗余代码来进行重复而繁琐的操作,也更好的提升了复用性。

    2023年04月13日
    浏览(46)
  • Java设计模式-命令模式

    命令模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化。对请求排队或记录请求日志,以及支持可撤销的操作。 命令模式乍一看,有点懵懵的。即使这个定义看完,也是不明所以。但是结合例子来讲的话,就比较容易理解了。 其实它就是把一个

    2024年02月15日
    浏览(36)
  • Java设计模式-状态模式

    在软件开发领域,设计模式是一组经过验证的、被广泛接受的解决问题的方案。其中之一是状态模式,它提供了一种优雅的方式来管理对象的不同状态。 状态模式是一种行为型设计模式,它允许对象在内部状态发生改变时改变其行为。状态模式将对象的行为封装在不同的状态

    2024年02月06日
    浏览(45)
  • Java设计模式-组合模式

    在软件设计中,设计模式是一种被广泛接受和应用的经验总结,旨在解决常见问题并提供可复用的解决方案。 组合模式是一种结构型设计模式,它允许将对象组合成树形结构以表示“部分-整体”的层次结构。这种模式能够使客户端以一致的方式处理单个对象和对象集合,将

    2024年02月06日
    浏览(42)
  • Java设计模式-外观模式

    在软件开发过程中,经常会遇到复杂的系统和庞大的类库。这些系统往往包含了大量的类和子系统,给开发人员带来了挑战。为了简化接口设计和提高系统的可用性,设计模式提供了一种名为外观模式的解决方案。 外观模式是一种结构型设计模式,旨在为复杂系统提供一个简

    2024年02月05日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包