常用的几种设计模式简略总结

设计模式简略总结

首先,设计模式是解决特定问题的一系列套路,目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。

软件设计模式重要组成

  1. 模式的名称
  2. 问题:描述了该模式的使用场景和解决了什么问题
  3. 解决方案:提供问题的抽象描述
  4. 效果分析:使用时利弊的权衡

分类

  1. 创建型模式:描述怎么创建对象。
  2. 结构型模式:怎么将类按照某种布局组成更大的结构
  3. 行为模式:怎么将类和对象相互协作完成单独对象无法完成的任务

描述设计模式用到的类图

  1. 类的表示:[可见性]属性名:类型[=默认值] [可见性]名称(参数列表)[:返回类型];其中+、-、#、~表示public private protected friendly 四种可见性。

    image-20200717194603996
  2. 接口的表示:带名字的小圆圈

    image-20200717194801330
  3. 类图:类和接口之间的静态关系模型

    • 虚线表示相关方法的具体实现

    • 类之间的关系(耦合度从弱到强排):

      • 依赖关系:带箭头的虚线,从使用类指向被依赖的类

        类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法

        image-20200717195056757

      • 关联关系:一类对象与另一类对象之间的联系

        • 一般关联关系:可以是双向的(带两个箭头或者没有箭头的实线来表示),也可以是单向的(一个箭头的实线来表示),箭头从使用类指向被关联的类

          一个类中包含另一个类的对象作为成员变量,上一个依赖是作为方法参数

          image-20200717195600762

      • 聚合关系:整体和部分的关系;带空心菱形的实线来表示,菱形指向整体

        也是成员对象的形式,但是成员可以独立存在

        image-20200717195814778

      • 组合关系:也是整体和部分;实心菱形的实线来表示,菱形指向整体

        部分和整体之间相关联,整体消失了,部分就没了

        image-20200717195948118

      • 泛化关系:一般和特殊的关系,继承关系;空心三角箭头的实线来表示,箭头从子类指向父类

        image-20200717200237501
      • 实现关系:空心三角箭头的虚线来表示,箭头从实现类指向接口

常见设计模式

  1. 单例模式:类只能有一个对象实例

    image-20200717201522837
  2. 原型模式:复制已有的对象到新的对象

    抽象原型类:规定了具体原型对象必须实现的接口
    具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象
    访问类:使用具体原型类中的 clone() 方法来复制新的对象。
    

    image-20200717201955412

  3. 工厂模式:

    抽象工厂,具体工厂,抽象产品,具体产品
    

    image-20200717202304565

  4. 抽象工厂模式:

    抽象工厂,具体工厂,抽象产品,具体产品
    

    image-20200717202521810

  5. 建造者模式:

    产品角色,抽象建造者,具体建造者,指挥者
    

    image-20200717202717787

  6. 代理模式:给某对象提供一个代理以控制对该对象的访问

    抽象主题,真实主题,代理类
    代理类和真实类实现同一个接口
    

    image-20200717203343549

  7. 适配器模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作

    目标接口,适配者,适配器
    

    image-20200717203931019

  8. 装饰者模式

    抽象构件,具体构件,抽象装饰,具体装饰
    

image-20200717204825121

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 常用设计模式有 23 种,它们可以分为三类:创建型模式、结构型模式和行为型模式。 1. 创建型模式 创建型模式主要关注对象的创建过程,包括如何创建对象、如何表示对象,以及如何保证对象的合理性和有效性。 (1) 单例模式(Singleton Pattern) 单例模式是一种创建型模式,它保证一个类只有一个实例,并提供一个全局访问点。常见的实现方式有饿汉式和懒汉式。 (2) 工厂模式(Factory Pattern) 工厂模式是一种创建型模式,它提供一个工厂方法来创建对象,而不是直接使用 new 关键字。常见的实现方式有简单工厂模式、工厂方法模式和抽象工厂模式。 (3) 建造者模式(Builder Pattern) 建造者模式是一种创建型模式,它将复杂对象的构建过程分离出来,使得同样的构建过程可以创建不同的表示。 (4) 原型模式(Prototype Pattern) 原型模式是一种创建型模式,它通过克隆已有对象来创建新的对象。 (5) 抽象工厂模式(Abstract Factory Pattern) 抽象工厂模式是工厂模式的扩展,它提供一个抽象的工厂接口,可以创建一系列相关的对象。 2. 结构型模式 结构型模式主要关注对象的组合和关联方式,包括如何组织对象并形成更大的结构、如何简化对象之间的依赖关系,以及如何使得对象的行为更加灵活和可扩展。 (1) 适配器模式(Adapter Pattern) 适配器模式是一种结构型模式,它将一个类的接口转换成客户希望的另一个接口。 (2) 桥接模式(Bridge Pattern) 桥接模式也是一种结构型模式,它将抽象部分和实现部分分离开来,使它们可以独立变化。 (3) 装饰器模式(Decorator Pattern) 装饰器模式是一种结构型模式,它动态地给一个对象添加一些额外的职责。 (4) 组合模式(Composite Pattern) 组合模式是一种结构型模式,它将对象组合成树形结构,以表示“部分-整体”的层次结构。 (5) 外观模式(Facade Pattern) 外观模式也是一种结构型模式,它为一组复杂的子系统提供一个统一的接口,使得这些子系统更易于使用。 (6) 享元模式(Flyweight Pattern) 享元模式是一种结构型模式,它利用共享技术来有效地支持大量细粒度的对象。 (7) 代理模式(Proxy Pattern) 代理模式是一种结构型模式,它为其他对象提供一种代理以控制对这个对象的访问。 3. 行为型模式 行为型模式主要关注对象之间的通信和协作方式,包括如何定义对象之间的消息传递机制、如何定义对象之间的协作关系,以及如何使得对象的行为更加灵活和可扩展。 (1) 责任链模式(Chain of Responsibility Pattern) 责任链模式是一种行为型模式,它将请求的发送者和接收者解耦,使得多个对象都有机会处理这个请求。 (2) 命令模式(Command Pattern) 命令模式是一种行为型模式,它封装了一个请求,使得可以将请求的发送者和接收者解耦。 (3) 解释器模式(Interpreter Pattern) 解释器模式是一种行为型模式,它定义了一种语言语法,以及一个解释器来解释执行这个语法。 (4) 迭代器模式(Iterator Pattern) 迭代器模式是一种行为型模式,它提供一种方法来访问聚合对象中的各个元素,而不暴露对象的内部表示。 (5) 中介者模式(Mediator Pattern) 中介者模式是一种行为型模式,它定义一个中介对象来封装一系列的对象交互。 (6) 备忘录模式(Memento Pattern) 备忘录模式是一种行为型模式,它在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 (7) 观察者模式(Observer Pattern) 观察者模式是一种行为型模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都会得到通知并自动更新。 (8) 状态模式(State Pattern) 状态模式是一种行为型模式,它允许一个对象在其内部状态发生改变时改变它的行为。 (9) 策略模式(Strategy Pattern) 策略模式是一种行为型模式,它定义了一系列算法,将每个算法封装起来并使它们可以互换。 (10) 模板方法模式(Template Method Pattern) 模板方法模式是一种行为型模式,它定义了一个操作中的算法骨架,将一些步骤延迟到子类中实现。 以上是 Java 常用设计模式及其简略举例及什么意思,每种设计模式都有自己的特点和应用场景,需要根据实际业务需求选择合适的模式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值