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
```