版权声明:本文为博主原创文章,未经博主允许不得转载。博客源地址为zhixiang.org.cn https://blog.csdn.net/myFirstCN/article/details/80871462
学习更多设计模式请参考:入门设计模式之汇总篇
策略模式:使算法在不影响客户端的情况下发生变化。
例如某宝上的一件商品,有时候8折并返现3元、有时候7折返现1元、有时候9折不返现、有时候不打折返现2元等等,我们可以看到这个商品不同时刻要计算利润或者什么的时候是不一样的,现在就可以用到策略模式了。
代码:
public abstract class Algorithm {
public abstract void method();
}
public class Algorithm1 extends Algorithm {
@Override
public void method() {
}
}
public class Algorithm2 extends Algorithm {
@Override
public void method() {
}
}
public class Algorithm3 extends Algorithm {
@Override
public void method() {
}
}
public class Client {
private Algorithm algorithm;
}
当需要更换算法实现的时候我们只需要更换Client对象持有的Algorithm的实现就可以了
本文出自https://zhixiang.org.cn/#/blog/read/1b8449ba-6740-40c7-b180-b5152d48625e,转载请保留。
学习更多设计模式请参考:入门设计模式之汇总篇
策略模式:使算法在不影响客户端的情况下发生变化。
例如某宝上的一件商品,有时候8折并返现3元、有时候7折返现1元、有时候9折不返现、有时候不打折返现2元等等,我们可以看到这个商品不同时刻要计算利润或者什么的时候是不一样的,现在就可以用到策略模式了。
代码:
public abstract class Algorithm {
public abstract void method();
}
public class Algorithm1 extends Algorithm {
@Override
public void method() {
}
}
public class Algorithm2 extends Algorithm {
@Override
public void method() {
}
}
public class Algorithm3 extends Algorithm {
@Override
public void method() {
}
}
public class Client {
private Algorithm algorithm;
}
当需要更换算法实现的时候我们只需要更换Client对象持有的Algorithm的实现就可以了
本文出自https://zhixiang.org.cn/#/blog/read/1b8449ba-6740-40c7-b180-b5152d48625e,转载请保留。