策略模式是23种设计模式中的对象行为型的设计模式之一。
策略模式架构
策略就是一个对象的行为。
场景
今天发工资啦,去商场购物。
当结账时发现会员卡已经从普通会员到中级会员了。
原本的普通卡9.6 折优惠,现在成为9 折优惠了。
可以想想,这就是一个典型的策略模式,当卡片等级不同,结账的策略可就不同了。
code
public class MainTest{
public static void main (String[] args) {
Card card = new Card();
card.checkout = new OrdinaryCardCheckout();
card.checkout();
card.checkout = new MediumCardCheckout();
card.checkout();
}
}
//会员卡
class Card{
//结账策略
public Checkout checkout;
//结账
public void checkout(){
checkout.checkout();
}
}
//结账策略
interface Checkout{
void checkout();
}
//普通卡结账的策略
class OrdinaryCardCheckout implements Checkout{
public void checkout(){
System.out.println("普通卡结账");
}
}
//中等卡结账的策略
class MediumCardCheckout implements Checkout{
public void checkout(){
System.out.println("中等卡结账");
}
}
当要添加一个新的卡片等级时,只需添加个新的策略,而不用更改原来的代码。这样就把耦合度降到非常低了。