Java常用设计模式——策略模式

Java中有很多设计模式,在网上也有很多设计模式的教程和资料,讲解的也比较详细,对我在学习中产生的问题提供了很大的帮助,但是经常有一些问题查了很多博客也无法再找到答案,所以我希望能填补一些这方面的空白,将我在日常学习过程的理解和想法写下来,并能和关心此类问题同学和朋友一起讨论一下。

设计模式是一套被反复使用,高效率、安全稳定且能解耦合,能够进行高效开发,降低代码冗余易于维护的一种编码习惯。本文将重点讨论设计模式中的策略模式。由于本文在技术实现上比较浅显,只包含策略模式基础简介和比较适合用法,适合新手学习和快速入门,如果您有更好的想法或者实现方式,欢迎在本文下留言或者通过longctw@outlook.com联系我。


**************请看下面内容*********************


 

一、简介

策略模式将可变的部分从程序中抽象分离成算法接口,在该接口下分别封装一系列的算法实现类并使它们可以相互替换,从而是客户端程序独立于算法的改变。每种实现是独立的、可执行的功能性单元。

策略模式要求实现同一接口的不同实现类之间功能相似,且不相互干扰,并可通过简单配置实现功能的切换。

二、一般应用

策略模式可通过配置、代码逻辑等改变功能模块,通过一个接口多个实现类,实现多套代码功能逻辑,可根据需求自由切换。

  • 针对同一类型问题的多种处理方式,仅仅是具体行为有差别时; 
  • 需要安全地封装多种同一类型的操作时; 
  • 出现同一抽象类有多个子类,而又需要使用 if-else 或者 switch-case 来选择具体子类时。

UML类图

三、代码实现

        接口

public interface Strategy {
    /**
     * 策略方法
     */
    public void strategyInterface();
}

实现类1

/**
 * 每个实现类时一块独立的功能单元,不依赖于其他的实现类
 * 可通过改变接口的实现类,从而改变该接口的功能
 */
public class ConcreteStrategyA implements Strategy {

    @Override
    public void strategyInterface() {
        //相关的业务
    }
}

实现类2

public class ConcreteStrategyB implements Strategy {

    @Override
    public void strategyInterface() {
        //相关的业务
    }
}

三、总结

策略模式主要是为了实现多套功能逻辑,方便需要的时候进行切换和扩展

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值