Java设计模式之策略模式(UML类图分析+代码详解) 您所在的位置:网站首页 观察者模式uml Java设计模式之策略模式(UML类图分析+代码详解)

Java设计模式之策略模式(UML类图分析+代码详解)

2023-07-21 16:03| 来源: 网络整理| 查看: 265

大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!!

本文将介绍java设计模式之策略模式

案例引入

鸭子问题:编写鸭子项目,具体要求如下:

1) 有各种鸭子(比如 野鸭、北京鸭、水鸭等, 鸭子有各种行为,比如 叫、飞行等)

2) 显示鸭子的信息

传统方案解决鸭子问题的分析和代码实现

1) 传统的设计方案(类图)

2) 代码实现

package strategy;/* 覆盖解决

4) 问题又来了,如果我们有一个玩具鸭子ToyDuck, 这样就需要ToyDuck去覆盖Duck 的所有实现的方法 => 解决思路 策略模式 (strategy pattern)

策略模式基本介绍

1) 策略模式(Strategy Pattern)中,定义算法族,分别封装起来,让他们之间可以 互相替换,此模式让算法的变化独立于使用算法的客户

2) 这算法体现了几个设计原则,第一、把变化的代码从不变的代码中分离出来; 第二、针对接口编程而不是具体类(定义了策略接口);第三、多用组合/聚合, 少用继承(客户通过组合方式使用策略)。

策略模式的原理类图

说明:从上图可以看到,客户context 有成员变量strategy或者其他的策略接口 ,至于需要使用到哪个策略,我们可以在构造器中指定。

策略模式解决鸭子问题

1) 应用实例要求 编写程序完成前面的鸭子项目,要求使用策略模式

2) 思路分析(类图) 策略模式:分别封装行为接口,实现算法族,超类里放行为接口对象,在子类里具体 设定行为对象。原则就是:分离变化部分,封装接口,基于接口编程各种功能。此模 式让行为的变化独立于算法的使用者

3) 代码实现

package strategy02;/* o2) { return -1; } else { return 1; } }; }; // 说明 /* * public static void sort(T[] a, Comparator


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有