`

设计模式==策略模式(Strategy)

阅读更多

/*
 *
 * 策略模式(Strategy)
 * 如同LayoutManager和具体的布局管理器的关系,在抽象策略类中定义方法,在具体策略子类中实现。
 * 客户代码根据不同的需要选择相应的具体类,例如电子商务中多种价格算法。
 *  一种策略一旦选中,整个系统运行期是不变化的
 */

package model;

public class TestStrategy {
    public static void main(String[] args) {
        Strategy s1 = new May1Strategy();
        Strategy s2 = new June1Strategy();
        Book b = new Book(100);
        b.setS(s2);
        System.out.println(b.getPrice());
    }
}

class Book {
    Strategy s;

    public Book(double price) {
        this.price = price;
    }

    private double price;

    public void setS(Strategy s) {
        this.s = s;
    }

    public double getPrice() {
        return price * s.getZheKou();
    }
}

interface Strategy {
    double getZheKou();
}

class May1Strategy implements Strategy {
    public double getZheKou() {
        return 0.8;
    }
}

class June1Strategy implements Strategy {
    public double getZheKou() {
        return 0.7;
    }
}
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics