Strategy策略设计模式

发布于:2021-07-20 04:38:39


文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github?;这博客是记录我学*的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的动态,一起学*,共同进步。



相关文章:


    Command命令设计模式Singleton单例设计模式Decorator装饰设计模式Template模板模式Strategy策略设计模式Proxy代理设计模式Factory工厂类设计模式设计模式的6大基本原则


文章目录:


1.策略模式定义


2.策略模式的特点


3.策略模式的缺点



1.策略模式定义

Strategy模式也叫作行为模式;它对一系列算法进行封装,提供接口,使用哪一种算法,它把选择权交给客户端的用户,使用哪种算法让用户决定。



2.策略模式的特点

(1)提供了可以替换继承关系的方法


(2)也避免了使用多重条件转移语句



3.策略模式的缺点

(1)客户端要知道所有的策略类,客户端的用户必须要了解这些算法的区别,从而选择合适自己的算法


(2)策略模式会造成很多的策略类,使项目变得复杂



策略模式的Demo:


1.方法接口:


package strategypattern2;

public interface MethodInterface {
//方法
public void method();
}

2.方法的实现部分一:


package strategypattern2;

public class WalkMethod implements MethodInterface{
@Override
public void method() {
// TODO Auto-generated method stub
System.out.println("走路!!!");
}
}

3.方法的实现部分二:


package strategypattern2;

public class RunMethod implements MethodInterface{
@Override
public void method() {
// TODO Auto-generated method stub
System.out.println("跑步....");
}
}

4.策略模式调用方法:


package strategypattern2;
/**
*类描述:选择需要的算法
*@author: 张宇
*@date: 日期: 2018年7月30日 时间: 下午7:13:01
*/
public class ContextMethod {

private MethodInterface methodInterface;
public ContextMethod(MethodInterface methodInterface){
this.methodInterface=methodInterface;
}
public void run(){
this.methodInterface.method();
}
}

5.客户端模式的测试类:


package strategypattern2;
/**
*类描述:简单的策略设计模式
*@author: 张宇
*@date: 日期: 2018年7月30日 时间: 下午7:10:04
*/
public class Cilent {
public static void main(String[]args){
ContextMethod context=new ContextMethod(new RunMethod());
context.run();
System.out.println("--------------------------------");
ContextMethod context1=new ContextMethod(new WalkMethod());
context1.run();
}
}

运行结果:


跑步....
--------------------------------
走路!!!


? ? ? ?策略模式在选择算法的时候用到,比如:打折活动,对于初级会员打折多少,中级会员打折多少,高级会员打折多少用到策略模式。支付的时候,选择是微信支付,支付宝支付,还是信用卡支付,也是用到策略模式(其实它和工厂设计模式相似)。


? ? ?策略模式也在spring框架中用到,和抽象工厂一起进行使用的;例如:HierarchicalBeanFactory、ListableBeanFactory、?ConfigurableBeanFactory在进行选择的时候,利用了策略模式进行自动的选择,而不是由我们自己去处理。? ?

相关推荐

最新更新

猜你喜欢