zoukankan      html  css  js  c++  java
  • 设计模式之策略模式

    描述:使用策略模式,在改变需求和扩展需求的时候,不需要改动以前的代码,只需要新增功能即可

    使用场景:用不同的方式去达到相同的效果,这些方式就是策略

    缺点:如果方式过多的话,会导致策略类过于冗余

    //出行方式的共同接口

    public interface TravelStrategy {

        //出行方式
        void travel();
    }

    //飞机出行方式

    public class AirplaneStrategy implements TravelStrategy{

        @Override
        public void travel() {

            System.out.println("搭乘飞机出行");
        }

    }

    //火车出行方式

    public class TrainStrategy implements TravelStrategy {

        @Override
        public void travel() {

            System.out.println("坐火车出行");
        }

    }

    //自行车出行方式

    public class BicycleStrategy implements TravelStrategy {

        @Override
        public void travel() {

            System.out.println("骑自行车出行");
        }

    }

    //扩展轮船出行方式

    public class ShipStrategy implements TravelStrategy {

        @Override
        public void travel() {

            System.out.println("坐轮船出行");
        }

    }

    //使用出行方式的人

    public class Person {

        private TravelStrategy travelStrategy;
        
        public Person(TravelStrategy travelStrategy){
            this.travelStrategy = travelStrategy;
        }
        
        public void travel(){
            this.travelStrategy.travel();
        }
    }

    //主方法

    public class Main {

        public static void main(String[] args){
            TravelStrategy t1 = new AirplaneStrategy();
            TravelStrategy t2 = new BicycleStrategy();
            TravelStrategy t3 = new TrainStrategy();
            TravelStrategy t4 = new ShipStrategy();
            Person p = new Person(t4);
            p.travel();
        }
    }

  • 相关阅读:
    web工程导入新环境的注意事项
    Mysql group by,order by,dinstict优化
    Dijkstra and Floyd算法
    百度面试题
    腾讯面试题
    百度笔试3
    百度笔试2
    百度笔试1
    百度2011实习生招聘笔试题
    百度2011.10.16校园招聘会笔试题
  • 原文地址:https://www.cnblogs.com/rrb520/p/5600818.html
Copyright © 2011-2022 走看看