Java实现策略模式(Strategy)—GoF(二)

策略模式(Strategy)

这里还是借用《大话设计模式》中的示例:

需求说明:
超市需要一个收银软件,并且支持打折,多种不同的打折方式可以结合使用,比如全部商品打8折、满500减300等等。

这个时候用简单工厂模式就不合适了,简单工厂模式只能一个一个生成打折的计算方式,使用它也没错,但是我们要考虑打8折如果替换为打7折呢?是不是还要改代码?

我们的代码中需要考虑如何封装这些会变化的打折算法。

@startuml
Title “到期工作日天数”

内置DueWorkdaysField ..> DueWorkdays
预定义DueWorkdaysField ..> DueWorkdays
DueWorkdays ..> WorkdayHelper
DueWorkdays ..> HistoryHelper
DueWorkdays ..> StatusHelper
WorkdayHelper ..> DateUtil

class DueWorkdays{

  • public getDueWorkdays()
    }

class WorkdayHelper{

  • public countWorkdays()
  • public isHoliday()
    }

class DateUtil{

  • public isWeekend()
    }
    @enduml

```

本文地址: https://github.com/maxzhao-it/blog/post/57679/