/**
* 抽象算法 接口
*/
public interface Strategy {
double getPrice(double standardPrice);
}
/**
* 新客户小批量
*/
public class NewCustomerFewStrategy implements Strategy{
@Override
public double getPrice(double standardPrice) {
System.out.println("不好意思,不打折,原件");
return standardPrice;
}
}
/**
* 新客户大批量
*/
public class newCustomermanyStrategy implements Strategy{
@Override
public double getPrice(double standardPrice) {
System.out.println("九折");
return standardPrice*0.9;
}
}
/**
* 老客户小批量
*/
public class OldCustomerFewStrategy implements Strategy{
@Override
public double getPrice(double standardPrice) {
System.out.println("八五折");
return standardPrice*0.85;
}
}
/**
* 老客户大批量
*/
public class OldCustomermanyStrategy implements Strategy{
@Override
public double getPrice(double standardPrice) {
System.out.println("七折");
return standardPrice*0.7; }
}
/**
* 负责和具体的策略类交互
* 这样的话,具体的算法和直接的客户端调用分离了,使得算法可以独立于客户端独立的变化
*/
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
public void PrintPrice(double s){
System.out.println("你该报价:"+strategy.getPrice(s));
}
}
public static void main(String[] args) {
Strategy st=new OldCustomermanyStrategy();
Context ct=new Context(st);
ct.PrintPrice(999);
}
设计模式(1):介绍
设计模式(2):单例模式
设计模式(3):工厂模式
设计模式(4):建造者模式
设计模式(5):原型模式
设计模式(6):桥接模式
设计模式(7):装饰器模式
设计模式(8):组合模式
设计模式(9):外观模式
设计模式(10):享元模式
设计模式(11):适配器模式
设计模式(12):代理模式
设计模式(13):模板方法模式
设计模式(14):命令模式
设计模式(15):迭代器模式
设计模式(16):观察者模式
设计模式(17):中介者模式
设计模式(18):状态模式
设计模式持续更新中…
更多【策略模式-设计模式(19):策略模式】相关视频教程:www.yxfzedu.com