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

  • 相关阅读:
    RedHat/CentOS根目录扩容
    VNC安装配置
    网络命名空间
    Linux 端口信息查看
    Linux实际常用命令
    yum的配置文件介绍
    Linux下查/删/替 命令(转)
    CentOS/redhat使用光盘镜像源
    数据库的附加和分离
    Corrupted Metadata/failed to mount /sysroot
  • 原文地址:https://www.cnblogs.com/rrb520/p/5600818.html
Copyright © 2011-2022 走看看