Java设计模式有哪些(java,编程语言)

时间:2024-05-04 12:18:22 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

    Java%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E6%9C%89%E5%93%AA%E4%BA%9B

创建型模式
创建型模式的作用就是创建对象,说到创建一个对象,最熟悉的就是 new 一个对象,然后 set 相关属性。但是,在很多场景下,我们需要给客户端提供更加友好的创建对象的方式,尤其是那种我们定义了类,但是需要提供给其他开发者用的时候。

结构型模式
前面创建型模式介绍了创建对象的一些设计模式,这节介绍的结构型模式旨在通过改变代码结构来达到解耦的目的,使得我们的代码容易维护和扩展。

有点复杂。建议参考原文

适配器模式用于将两个不同的类进行适配。

适配器模式和代理模式的异同

比较这两种模式,其实是比较对象适配器模式和代理模式,在代码结构上,
它们很相似,都需要一个具体的实现类的实例。
但是它们的目的不一样,代理模式做的是增强原方法的活;
适配器做的是适配的活,为的是提供“把鸡包装成鸭,然后当做鸭来使用”,
而鸡和鸭它们之间原本没有继承关系。

适配器模式可以分为类适配器,对象适配器等。

类适配器通过继承父类就可以把自己适配成父类了。
而对象适配器则需要把对象传入另一个对象的构造方法中,以便进行包装。

/ 享元模式的核心在于享元工厂类,
// 享元工厂类的作用在于提供一个用于存储享元对象的享元池,
// 用户需要对象时,首先从享元池中获取,
// 如果享元池中不存在,则创建一个新的享元对象返回给用户,
// 在享元池中保存该新增对象。

//享元模式
// 英文是 Flyweight Pattern,不知道是谁最先翻译的这个词,感觉这翻译真的不好理解,我们试着强行关联起来吧。Flyweight 是轻量级的意思,享元分开来说就是 共享 元器件,也就是复用已经生成的对象,这种做法当然也就是轻量级的了。
//
// 复用对象最简单的方式是,用一个 HashMap 来存放每次新生成的对象。每次需要一个对象的时候,先到 HashMap 中看看有没有,如果没有,再生成新的对象,然后将这个对象放入 HashMap 中。
//
// 这种简单的代码我就不演示了。

// 我们发现没有,代理模式说白了就是做 “方法包装” 或做 “方法增强”。
// 在面向切面编程中,算了还是不要吹捧这个名词了,在 AOP 中,
// 其实就是动态代理的过程。比如 Spring 中,
// 我们自己不定义代理类,但是 Spring 会帮我们动态来定义代理,
// 然后把我们定义在 @Before、@After、@Around 中的代码逻辑动态添加到代理中。

外观模式一般封装具体的实现细节,为用户提供一个更加简单的接口。

通过一个方法调用就可以获取需要的内容。

装饰者模式把每个增强类都继承最高级父类。然后需要功能增强时把类实例传入增强类即可,然后增强类在使用时就可以增强原有类的功能了。

和代理模式不同的是,装饰者模式每个装饰类都继承父类,并且可以进行多级封装。

行为型模式
行为型模式关注的是各个类之间的相互作用,将职责划分清楚,使得我们的代码更加地清晰。

策略模式一般把一个策略作为一个类,并且在需要指定策略的时候传入实例,于是我们可以在需要使用算法的地方传入指定算法。

命令模式一般分为命令发起者,命令以及命令接受者三个角色。

命令发起者在使用时需要注入命令实例。然后执行命令调用。

命令调用实际上会调用命令接收者的方法进行实际调用。

比如遥控器按钮相当于一条命令,点击按钮时命令运行,自动调用电视机提供的方法即可。

模板方法一般指提供了一个方法模板,并且其中有部分实现类和部分抽象类,并且规定了执行顺序。

实现类是模板提供好的方法。而抽象类则需要用户自行实现。

模板方法规定了一个模板中方法的执行顺序,非常适合一些开发框架,于是模板方法也广泛运用在开源框架中。

少见。

观察者模式一般用于订阅者和消息发布者之间的数据订阅。

一般分为观察者和主题,观察者订阅主题,把实例注册到主题维护的观察者列表上。

而主题更新数据时自动把数据推给观察者或者通知观察者数据已经更新。

但是由于这样的方式消息推送耦合关系比较紧。并且很难在不打开数据的情况下知道数据类型是什么。

知道后来为了使数据格式更加灵活,使用了事件和事件监听器的模式,事件包装的事件类型和事件数据,从主题和观察者中解耦。

主题当事件发生时,触发该事件的所有监听器,把该事件通过监听器列表发给每个监听器,监听得到事件以后,首先根据自己支持处理的事件类型中找到对应的事件处理器,再用处理器处理对应事件。

责任链通常需要先建立一个单向链表,然后调用方只需要调用头部节点就可以了,后面会自动流转下去。比如流程审批就是一个很好的例子,只要终端用户提交申请,根据申请的内容信息,自动建立一条责任链,然后就可以开始流转了。

本文:Java设计模式有哪些的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:怎么理解Java面向对象三大特性下一篇:

16 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18