Java设计模式-策略模式(优雅)写法

什么是策略模式,它又是能解决什么问题呢?相信都能看到这篇文章应该是已经了解了的,就不过多介绍了;

举个栗子:我们现在上课需要拿出课本朗读,但是不同的课程类型朗读的内容是不相同的,这时就可以把读书这个公共操作独立出来,让不同课程自己实现它自己要怎么去读这本书;

栗子很烂,不过通俗易懂。

1、结构说明

1)策略接口,比如:读书接口;

 2)策略接口的实现类,即读什么书,语文、数学或者英语;

3)策略抽象类,这一层当然是可以去掉的,用来保护策略接口,提取策略类公共方法;

4)策略类型枚举类,通过枚举值来唯一标识每一个策略;

5)策略工厂上下文,在这个类中初始化各个策略类型在容器中,根据标识来确定走哪种具体的策略。

2、策略模式实现

        1.准备策略类型的枚举类,后面会用于区分各个策略;

        2.策略接口类,具体策略方法的来源;

         3.策略抽象类,用来保护具体的策略方法;

        4.具体的策略类,语文策略类,数学策略类,英语策略类;

         5.策略工厂上下文类,使用了@PostConstruct 初始化各个策略类型到容器中;

 整个策略代码已经写完了,现在开始单元测试

@Test
public void read(){
    String chinese = "语文真有趣!";
    String math = "1+1=3";
    String english = "english is funny";

    readBookContext.readBook(BookKindEnum.CHINESE.getCode(), chinese);
    readBookContext.readBook(BookKindEnum.MATH.getCode(), math);
    readBookContext.readBook(BookKindEnum.ENGLISH.getCode(), english);
}

结果展示

 

 可能你们会疑惑为什么主要策略代码不贴出来,就贴一个单元测试?

别急,作者有话要说。

其实在我看来,自己手动敲一遍才能去更好的理解这些代码为什么要这样去写,看一百遍不如写一遍,在理解之后使用起来就会更加得心应手,手未动,码已出。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值