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();
        }
    }

  • 相关阅读:
    B2B商城网站前端开发
    Scss开发临时学习过程||webpack、npm、gulp配置
    移动开发注意几点
    拥有的50个CSS代码片段(上)
    css3基础、(弹性、响应式)布局注意点
    js封装、简单实例源码记录
    ES8
    es7与es8
    Iterator
    Math,Number
  • 原文地址:https://www.cnblogs.com/rrb520/p/5600818.html
Copyright © 2011-2022 走看看