网站首页 > 精选教程 正文
设计模式是一套经过验证的设计方案和最佳实践,这些经验和方案主要就是用来解决软件设计过程中一些特定的问题。设计模式并不是代码本身,而是一种用来解决某种问题的抽象的解决方案,也就是说设计模式是在不同的语言、不同的场景中进行复用的。一般情况下我们可以将设计模式分为三类创建型模式、结构型模式和行为型模式。下面我们就分别介绍一下这三类设计模式中包含的内容。
创建型模式 (Creational Patterns)
创建型设计模式,主要涉及对象实例化的方式,是用来帮助系统独立对象的创建过程,如下所示,是常见的创建型的设计模式,其中比较常用的就是单例以及工厂设计模式。
单例模式(Singleton Pattern)
单例设计模式的使用,主要是为了确保在系统中一个类只有一个实例,并且通过这个单例类提供一个全局访问点。
工厂方法模式(Factory Method Pattern)
定义一个用于创建对象的接口,但由子类决定实例化哪一个类。
抽象工厂模式(Abstract Factory Pattern)
提供一个创建一系列相关或依赖对象的接口,而无需指定它们的具体类。
建造者模式(Builder Pattern)
将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。
原型模式(Prototype Pattern)
原型模式主要就是通过对现有对象的复制操作来创建新的对象,而不是通过New这种方式通过实例化的方式来创建对象,可以保证创建对象都是同一个原型出品。
结构型模式 (Structural Patterns)
构建型设计模式,主要的作用就是帮助系统进行对象的组合,如下所示。
适配器模式(Adapter Pattern)
将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作。
桥接模式(Bridge Pattern)
桥接模式就是将对象的抽象部分与它的实现部分分离,使它们都可以独立地变化。
组合模式(Composite Pattern)
将对象组合成树形结构以表示“部分-整体”的层次结构,使得客户端对单个对象和组合对象具有一致的处理方式。
装饰器模式(Decorator Pattern)
动态地给对象添加职责,将对象的职责附加到某个类上,通常在不修改原始类的情况下扩展功能。
外观模式(Facade Pattern)
为子系统中的一组接口提供一个一致的接口,使得子系统更易于使用。
享元模式(Flyweight Pattern)
通过共享尽可能多的对象来减少内存使用,适用于大量相似对象的场景。
代理模式(Proxy Pattern)
为其他对象提供一个代理,以控制对这个对象的访问,这个也是在开发过程中比较常用的一种设计模式
行为型模式 (Behavioral Patterns)
行为型设计模式,顾名思义,就是用来管理类或对象之间的交互,用来解决系统之间对象交互的管理,如下所示。
责任链模式(Chain of Responsibility Pattern)
通过将请求沿着一条链传递,让多个对象有机会处理该请求,避免请求的发送者和接收者耦合在一起。
命令模式(Command Pattern)
将请求封装为对象,从而使得可以用不同的请求来参数化其他对象,并支持请求的撤销和重做操作。
解释器模式(Interpreter Pattern)
解释器模式,为语言创建解释器,使得语言中的句子能够解释为抽象语法树。
迭代器模式(Iterator Pattern)
通过迭代器模式,提供一种顺序访问一个聚合对象中的各个元素的方法,而无需暴露该对象的内部表示。
中介者模式(Mediator Pattern)
定义一个中介对象来封装一组对象的交互方式,从而使这些对象之间不必显式地相互引用,达到松耦合的目的。
备忘录模式(Memento Pattern)
备忘录模式,是在不破坏封装操作的前提下,对对象内部状态进行捕捉,然后在后续需要的时候恢复对象的这个状态。
观察者模式(Observer Pattern)
定义对象之间的一对多依赖关系,当一个对象状态改变时,所有依赖它的对象都会收到通知并自动更新。
状态模式(State Pattern)
状态模式,它允许了对象的内部状态发生变化的时候对其行为进行改变,有点类似于修改了它的类的操作方式。
策略模式(Strategy Pattern)
定义一系列算法,将每个算法封装起来,并使它们可以互换,算法的变化不会影响使用算法的客户。
模板方法模式(Template Method Pattern)
定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法的某些步骤。
访问者模式(Visitor Pattern)
表示一个作用于某对象结构中的各元素的操作,使得可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
总结
每种设计模式都有其适用的场景,例如如果你需要确保一个类只有一个实例,你可以使用单例模式。如果你需要为现有的类提供不同的接口,可以使用适配器模式等等。通过熟悉并掌握这些设计模式,可以在软件开发中更加灵活、优雅地解决各种复杂问题。
猜你喜欢
- 2024-10-30 使用java开发设计六大基本原则(摘自阿里巴巴java开发规范)
- 2024-10-30 详述「设计模式」及其 Java 实现 java设计模式总结
- 2024-10-30 一起来聊聊Java里面的设计模式 java 设计模式有哪些
- 2024-10-30 Mybatis 使用的 9 种设计模式详解,看看能给你带来哪些启发?
- 2024-10-30 Java设计模式:模板方法模式、命令模式与中介者模式
- 2024-10-30 Java程序设计-类和对象(笔记) java类设计的基本原则
- 2024-10-30 java:设计模式 java设计模式及应用案例
- 2024-10-30 万字图文详解24种设计模式 设计万能模板
- 2024-10-30 Java的23种设计模式-快速入门篇 java设计模式及应用案例
- 2024-10-30 一文搞懂 JAVA 主流锁设计 java锁有哪几种
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)