# Java 策略模式与鸭子示例
## 引言
在软件设计中,策略模式是一种常用的行为设计模式。它的核心思想是将算法的定义和使用分离开来,使得它们可以独立变化。在本篇文章中,我们将通过一个关于鸭子的例子来深入探讨策略模式的用法,以及如何在 Java 中实现它。
## 策略模式概述
策略模式通常用来定义一系列的算法,将每一个算法封装起来,并使其可以互换,从而使得算法的变化不会影响使用算法的客户
原创
2024-09-20 08:32:20
34阅读
1.策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法可以独立于使用它的客户而变化。(1)Context(环境类):环境类是使用算法角色,它在解决某个问题(即实现某个功能)时可以采用多种策略。在环境类中维持一个对抽象策略类的引用实例,用于定义所采用的策略。(2)Strategy(抽象策略类):抽象策略类所支持的算法声明了抽象方法
转载
2023-09-08 23:30:42
41阅读
万事开头难,最近对这句话体会深刻!这篇文章是这个系列正式开始介绍设计模式的第一篇,所以肩负着确定这个系列风格的历史重任,它在我脑袋里默默地酝酿了好多天,却只搜刮出了一点儿不太清晰的轮廓,可是时间不等人,以后再多“迭代”几次吧!在前面的随笔里,我已经提到了,这个系列准备以《Head First Design Patterns》的结构为主线,所以每个模式的核心故事都是取材于此书,在此再次声明一下。不管
转载
2011-09-15 23:25:00
99阅读
2评论
[转]鸭子-策略模式(Strategy)
原创
2022-08-19 22:12:00
82阅读
你看那里有只小鸭哟,你看那里又只小鸭哟~小鸭嘎嘎嘎-ga-哟~小鸭嘎嘎嘎-ga-哟~ 矮油我艹,居然被这神曲给洗脑了。现在一看到小动物就莫名其妙的会哼唱起来,那么问题来了,长颈鹿怎么叫?“好长~好长~”是这样叫的么?这个问题真的很逗逼耶…… 好啦,不扯淡了,原
原创
2014-11-28 14:55:46
2421阅读
策略模式的设计原则如下:
1. 将应用中需要经常变化的代码独立出来,应和那些不需要经常变化的代码分开。
2. 应针对接口,而不是类进行编程。
3. 在类中应多用组合,少用继承。
例子:
我们要
推荐
原创
2009-02-11 13:41:00
3502阅读
2评论
面向对象的经典例子,我喜欢~
策略模式的设计原则如下:
1. 将应用中需要经常变化的代码独立出来,应和那些不需要经常变化的代码分开。
2. 应针对接口,而不是类进行编程。
3. 在类中应多用组合,少用继承。
&
转载
精选
2009-12-15 11:39:19
579阅读
public abstract class Duck {
FlyBehavior flyBehavior;
QuackBehavior quackBehavior;
public Duck() {
}
public abstract void display();
public void performFly() {
flyBehavior.fly();
}
public void perfor
转载
2016-04-09 22:01:00
73阅读
2评论
是针对实现编程。
原创
2022-12-15 16:05:46
48阅读
Java学习视频系列,讲到集合类,然后就专门讲了策略模式。
策略模式Strategy Pattern 在Java的集合框架中,经常需要通过构造方法传入一个比较器Comparator,或者创建比较器传入Collections的静态方法中作为方法参数,进行比较排序等,使用的是策略模式。策略模式的定义 定义一组算法,将每个算法都封装起来,并且使它们之间可以
转载
2023-06-01 00:01:00
253阅读
简介策略模式是属于行为模式的,在策略模式中,一个类的行为或算法可以在运行时更改。其思想是针对一组算法,将每一种算法都封装到具有共同接口的独立的类中,从而是它们可以相互替换。策略模式的最大特点是使得算法可以在不影响客户端的情况下发生变化,从而改变不同的功能。优点算法可以自由切换避免使用多重判断条件扩展性良好缺点策略类会增多所有策略类都需要对外暴露使用场景使用在一个系统里面有许多类,它们之间的区别仅在
转载
2023-09-18 00:07:09
82阅读
1.策略模式策略模式是对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。2.策略模式的结构参与角色:Context:环境角色,持有一个引用,并给客户端提供一个方法,调用策略。Strategy:抽象策略角色,定义所有策略算法的公共接口,给Context调用提供一个统一的接口。Strategy
转载
2024-04-04 08:54:18
136阅读
策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。
转载
2023-07-19 09:53:57
114阅读
单例模式保证一个类智能通有一个实例对象,并提供外部对他的全局访问点。单例模式可以提高性能减轻GC的压力,但是有可能会出现线程安全问题。在Spring中使用了ConcurrentHashMap单例注册表的特殊方式实现了单例模式。策略模式它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到算法的调用者,调用感知不到底层实现的变化。策略模式就是定义一个接口,让接口实现类去
转载
2023-12-20 09:17:52
98阅读
文章目录什么是策略模式优点缺点使用场景结构图策略模式的简单示例策略模式的项目实战场景实现小结 什么是策略模式官话:策略模式(Strategy Pattern): 定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化。简单理解就是,针对不同的场景,使用不同的策略进行处理;优点算法可以自由切换。避免使用多重条件判断。扩展性良好。缺点策略类会增多。所有策略
转载
2023-09-09 14:24:11
80阅读
策略模式的实际应用就是消除代码块中的if else语句,这个时候就有人说了,if else挺好的啊,写代码本来就是if else的逻辑判断,处理业务 写小项目没问题,但是那种大型的项目,有的时候对一个变量的判断,走不同的逻辑,然后不断的加需求,就会导致类似下面这种if else if有几十个,真的很夸张 写一个简单的例子,如下,其实就是一个策略接
转载
2023-06-27 17:29:17
72阅读
策略(Strategy)模式:又名Policy,它的用意是定义一组算法,把它们一个个封装起来,并且使他们可以相互替换。策略模式可以独立于使用他们的客户端而变化。GOF策略模式静态结构类图如下:通过上图可以看出策略模式有以下角色构成:1、抽象策略(Strategy)角色:抽象策略角色由抽象类或接口来承担,它给出具体策略角色需要实现的接口;2、具体策略(ConcreteStrategy)角色:实现封装
转载
2023-07-25 17:44:40
138阅读
设计模式【策略模式】今天不搞别的就来点素的,分享一个Java日常开发中常用的设计模式——策略模式。 在企业开发中,策略模式运用也非常广泛,用的好可以大大的提高代码的管理性,对相关算法或行为族管理一目了然。。 同时也具有更好的维护性和拓展性。 文章目录设计模式【策略模式】一. 简单认识优缺点优点缺点二. 撸代码1. 首先我们需要定义抽象出来相同行为的接口2. 定义策略工厂3. 基类实现行为算法4.
转载
2023-10-20 10:27:42
65阅读
策略模式解决支付问题1.业务场景2.解决方案3.代码设计3.1首先建立如下的包目录结构3.2在enums包下新建支付方式的注解,代码如下3.3 annotation包下新建支付方式的注解,代码如下3.4 service包下新建支付服务接口,代码如下3.5 strategy包下新建支付服务的策略实现类3.5.1 支付宝支付策略类:3.5.2微信支付策略类3.6 pay包下新建支付服务策略工厂3.7
转载
2023-11-28 05:41:33
80阅读
1、什么是策略模式(Strategy Pattern)策略模式(Strategy Pattern)是指定义了算法家族并分别封装起来,让它们之间可以相互替换,此模式使得算法的变化不会 影响使用算法的用户。2、策略模式的应用场景策略模式的应用场景如下:系统中有很多类,而它们的区别仅仅在于其行为不同。一个系统需要动态的在几种算法之间选择一种。3、策略模式的成员结构策略模式有以下三种角色构成抽象策略类:定
转载
2023-09-04 10:20:43
81阅读