JAVA策略模式简介说明

书欣 Java教程 发布时间:2023-01-30 11:49:31 阅读数:9969 1
下文笔者讲述java策略模式的简介说明,如下所示

策略模式简介

策略模式是对象的行为模式
     对象根据不同的策略对外表现出不同的行为
	 我们这种算法表现称之为"策略模式"
 

策略模式包含的内容

 
1.一个或多个使用策略对象的客户 
2.一个代表某个逻辑的接口, 它是策略模式的接口. (抽象策略角色)
3.一个或多个该接口的具体实现, 它们代表了算法的多种实现.(具体策略角色)
设计模式之策略模式示例

策略模式的使用场景

1.容错恢复机制, 程序运行的时候 
    例:
	  一个系统要对所有的操作进行日志记录, 且需要把日志记录落库, 方便后续的使用, 
	    但是在把日志记录落库的时候, 可能会发生错误, 
		 如数据库出现问题, 那就先可以记录在文件里面, 等到数据库问题修复, 
		  再把文件中的日志记录同步到数据库中去. 对于这样的功能设计,
		   可以采用策略设计模式, 根据需要在运行期间进行动态的切换实现类

2.不同的会员等级享受不同的折扣和计算方式
     这种情况可定义不同的实现类,动态的根据级别切换实现类
等

策略模式示例

Client端代码

public class Client {
    public static void main(String[] args) {
        //根据需要客户自行选择策略
 
        //选择策略1
        StrategyObj strategyOne = new StrategyObj(new StrategyOne());
        System.out.println(strategyOne.strategy("one"));
        //选择策略2
        StrategyObj strategyTwo = new StrategyObj(new StrategyTwo());
        System.out.println(strategyTwo.strategy("two"));
    }
}
 
----运行以上代码,将输出以下信息-----
执行策略1!
执行策略2!
  
/**
 * @desc:策略接口
 */
public interface Strategy {
    String execute(String s);
}
 
/**
 * @desc:策略接口封装
 */
public class StrategyObj {
 
    private final Strategy strategy;
 
    public StrategyObj(Strategy v) {
        this.strategy = v;
    }
 
    public String strategy(String s) {
        return strategy.execute(s);
    }
}


策略模式实现类
/**
 * @desc:策略一
 */
public class StrategyOne implements Strategy {
    @Override
    public String execute(String s) {
        return "执行策略1!";
    }
}
 
/**
 * @desc:策略二
 */
public class StrategyTwo implements Strategy {
    @Override
    public String execute(String s) {
        return "执行策略2!";
    }
}

5.使用Lambda表达式
public class Client {
    public static void main(String[] args) {
        StrategyObj strategyOne = new StrategyObj((String s) -> {return "执行策略1";});
        System.out.println(strategyOne.strategy("one"));
 
        StrategyObj strategyTwo = new StrategyObj((String s) -> {return "执行策略2";});
        System.out.println(strategyTwo.strategy("two"));
    }
} 

策略模式优缺点

策略模式优点
  1.使用策略模式可以避免使用多重条件if...else if...else语句, 多重条件不易维护且代码可读性差
     策略模式加工厂模式可以很好的解决 if else过多的情况
  2.策略模式可以将具体策略放入具体的实现类中,公共方法则放入到父类中实现 

策略模式缺点
   如果策略过多的话,会导致类爆炸的现象发生
 
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaCourse/202301/5580.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者