美文网首页
策略模式-strategy

策略模式-strategy

作者: HeJD | 来源:发表于2018-04-02 10:56 被阅读0次

    定义一系列的算法,把他们一个个封装起来,并且使它们可以相互替换。本模式是的算法可以独立于使用他的客户而变化

    这里写图片描述
    Context中的contextinterface实际是使用context类中的strategy的algorithminterface方法

    优点:

     strategy层定义了一个算法系列,供context随意替换
     
     消除if else switch等语句 
    

    缺点:

    客户需了解不同strategy的区别
     
    增加了对象数目
    
    增加了strategy和context之间的通信开销 
    

    代码

    Main

    public class Main {
    
        public static void main(String[] args) {
            Goaway goaway=new Goaway();
            goaway.setMystStrategy(new Fly());
            
            goaway.getWay();
        }
    
    }
    

    Goaway

    public class Goaway {
    
        Strategy mystStrategy;
    
        public Strategy getMystStrategy() {
            return mystStrategy;
        }
    
        public void setMystStrategy(Strategy mystStrategy) {
            this.mystStrategy = mystStrategy;
        }
        
        public void getWay(){
            if(mystStrategy!=null){
                mystStrategy.getWay();
            }else{
                System.out.println("No way");
            }
        }
    }
    

    interface:Strategy

    public interface Strategy {
        
        public void getWay();
    
    }
    

    imp:Drive

    public class Drive implements Strategy {
    
        @Override
        public void getWay() {
            System.out.println("开车");
        }
    
    }
    

    imp:Fly

    public class Fly implements Strategy {
    
        @Override
        public void getWay() {
            System.out.println("飞");
        }
    
    }
    

    imp:Walk

    public class Walk implements Strategy {
    
        @Override
        public void getWay() {
            System.out.println("走路");
        }
    
    }
    

    相关文章

      网友评论

          本文标题:策略模式-strategy

          本文链接:https://www.haomeiwen.com/subject/oyxvcftx.html