java设计模式一共有23种,其中主要分为三大类:1:创建型模式工厂方法模式、抽象工厂模式、单例模式、创建者模式、原型模式。2:结构型模式适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。3:行为模式策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模状态模式、访问者模式、中介者模式、解释器模式。今天我们主要讲解行为模式中的策略模式:白话讲策略模式
背景最近在忙一个需求,大致就是给满足特定条件的用户发营销邮件,但是用户的来源有很多方式:从 ES 查询的、从 csv 导入的、从 MongoDB 查询….. 需求很简单,但是怎么写的优雅,方便后续扩展,就存在很多门道了。我们的项目是基于 Spring Boot 开发的,因此这篇文章也会基于 Spring Boot 作为基础框架,教你如何使用 Spring 依赖注入的特性,优雅的实现策略模式。1.
看了Head-First工厂模式那一章,完全蒙了,发现工厂模式策略模式好像,傻傻地分不出来什么他们的区别,上网找各种资料,然后反复看了一下Head First设计模式这本书,现在我来做一些我个人的总结吧,引用一些在网上看到的好的解释。首先,定义:策略模式:定义了算法簇,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。工厂模式:定义了一个创建对象的接口,但由子类决定要
# Java中的策略模式工厂模式 ## 引言 在软件开发中,我们经常会遇到需要根据不同的情况选择不同的算法或行为的需求。为了解决这类问题,我们可以使用策略模式工厂模式。本文将介绍这两种模式的概念、设计思想以及如何在Java中实现它们。 ## 策略模式 ### 策略模式是什么? 策略模式是一种行为型设计模式,它允许我们定义一系列算法,并将每个算法封装到独立的类中,使它们可以互相替换。通
原创 7月前
84阅读
上一次我们聊了简单工厂模式,让大家了解到了如何使程序具备更高的解耦性,使每一个功能代码都独立出来,今天我们和大家聊一下另一种解耦的设计模式,它就是策略设计模式。什么是策略设计模式:它定义了算法家族,分别封装起来,让他们之间可以项目替换,此模式让算法的变化,不会影响到算法的客户。我们可以这样理解,工厂模式是让我们内部的构造变得高内聚低耦合,而策略模式是让我们的内部代码和外部客户端代码不直接进行联系,
设计模式工厂模式工厂模式分三种:简单工厂模式(也叫静态工厂模式),工厂方法模式(也叫多形性工厂),抽象工厂模式(也叫工具箱)下面会一一举例。一、概念1、什么是工厂模式     这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。工厂模式关心的是最终产出(创建)的对象, 而不关心创建的过程。2、工厂模式的优点工厂模式主要是为创建对象提供过渡接口,以便将创
在实际应用中,策略模式通常会搭配工厂模式使用。这篇博客将会介绍普通的工厂策略模式实现方式,以及如何结合Spring使用策略工厂模式。其中前俩种实现方式是比较简单的,第三种的话,就相对来说比较烧脑了,需要花时间研究一下。普通工厂策略模式案例很简单,就是有三个Animal 接口的实现类,希望通过传入不同的Type,调用对应实现类的sound方法。策略类如下:public interface Anima
定义:工厂模式的思想主要为:多个类似的子类继承同一个父类,对其父类中的变量进行操作;工厂类负责判断、控制哪个子类被执行,而工厂类调用子类完成后,返回的结果是该子类的父类,该父类中的变量已经被操作过了,访问该父类,得到我们想要的结果策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。1. 相似:在模式结构上,两者很相似;2.差别:
参考文章: 什么是工厂模式工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。优点: 1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。
(本次设计模式摘自大话设计模式书本知识,用 C# 讲解的)简单工厂模式简单工厂模式是属于创建型模式,简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。策略模式前言:面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。策略模式: 它定义了算法家
模式设计学习——工厂设计与策略设计 文章目录模式设计学习——工厂设计与策略设计前言一、工厂模式策略模式是什么?二、实现1.工厂模式2.策略模式总结 前言记录笔者在工作学习中总结的知识点,如有需要完善之处欢迎留言评论指导。一、工厂模式策略模式是什么?1.工厂模式定义:工厂模式是是 Java 中最常用的设计模式之一,是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式,属于创建型模
转载 2023-08-13 18:13:47
104阅读
策略模式,顾名思义就是设计一个策略算法,然后与对象拆分开来将其单独封装到一系列策略类中,并且它们之间可以相互替换。首先LZ举一个例子为大家引出这一个模式。例子:某公司的中秋节奖励制度为每个员工发放200元,现在我们设计一个员工基类, public class Staff { public void payOff(){ System.out.println("发工资200"
过多的if-else代码和嵌套,会使阅读代码的人很难理解到底是什么意思。尤其是那些没有注释的代码。其次是可维护性,因为if-else特别多,if-else是有办法可以消除掉的,其中比较典型的并且使用广泛的就是借助策略模式工厂模式,准确的说是利用这两个设计模式的思想,彻底消灭代码中的if-else。传统用if else (伪代码)public BigDecimal calPrice(BigDeci
1.核心工厂类/** * 工厂类:初始化加载 * 作用:这个类初始化的时候会去加载指定包下的资源,通过类加载器将Class类对象加载进来,并存储在集合里面。 * 通过Class对象获取类上的注解,通过注解范围匹配到对应的策略上。该工厂通过静态内部类对外提供单例,不失为一种优雅的实现方式。 */ public class CalPriceFactory { private static f
前言设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。策略模式是oop中最著名的设计模式之一,是对方法行为的抽象,可以归类为行为设计模式,也是oop中interface经典的应用。其特点
1、策略设计模式 创建一个能够根据所传递参数对象的不同而具有不同行为的方法,被称为策略设计模式。这类方法包含算法中所要执行的不变部分,而“策略”包含变化的部分。 接口的一种常见用法就是策略模式,编写一个执行某些操作的方法,而该方法将接受一个同样是你指定的接口,就可以用任何你想要的对象来调用我的方法,只要你的对象遵循我的接口。这样使你的方法更加灵活、通用,并且更具有可复用性。 a、在本例中Pr
名词理解:工厂(Factory)模式我们可以做如下理解,假设有一个Audi的公司生产汽车(似乎也不用假设了),它掌握一项核心的技术就是生产汽车,另一方面,它生产的汽车是有不同型号的,并且在不同的生产线上进行组装。当客户通过销售部门进行预定后,Audi公司将在指定的生产线上为客户生产出它所需要的汽车。策略(Strategy)模式在结构上与工厂模式类似,唯一的区别是工厂模式实例化一个产品的操作是在服务
这段时间看了一些设计模式,看到策略模式工厂模式的时候,总是感觉他们很相似,不要区分,到具体的场景了你可能还在徘徊到底用工厂还是策略呢?工厂模式是创建型模式策略模式是行为性模式。一个关注对象创建。一个关注行为的封装。策略模式就是定义一系列的算法,这些算法可以在需要的时候替换和扩展.工厂模式是生成型的模式,在你需要的时候构建具体的实例.在下面的情况下应当考虑使用策略模式:1. 如果在一个系统
# 实现Java工厂策略模式的步骤 ## 流程表格 | 步骤 | 操作 | | ---- | ---- | | 1 | 定义接口 | | 2 | 实现接口的多个策略类 | | 3 | 创建工厂类 | | 4 | 在工厂类中根据输入参数选择具体策略类 | | 5 | 调用工厂类来获取具体策略类的实例 | | 6 | 使用具体策略类完成相应的业务逻辑 | ## 代码实现 ### 接口定义 `
原创 2月前
15阅读
# 实现Java策略工厂模式 ## 概述 在这篇文章中,我将教会你如何实现Java中的策略工厂模式。这种设计模式可以帮助你动态地选择算法或策略,而不需要在代码中硬编码。 ## 流程 下面是实现Java策略工厂模式的步骤: | 步骤 | 操作 | | ------ | ------ | | 1 | 创建一个接口,定义策略的方法 | | 2 | 实现接口,编写具体的策略类 | | 3 | 创建一
原创 5月前
83阅读
  • 1
  • 2
  • 3
  • 4
  • 5