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

  • 相关阅读:
    使用pymouse模块时候报错No module named 'windows'
    解决PIL透明的图片放在新图片上报错
    解决PIL切圆形图片存在锯齿
    常见金融术语-帮助更好的理解金融业务需求
    FastJson序列化时过滤字段(属性)的方法总结
    数据库事务4种隔离级别及7种传播行为
    硬件网络接口规范
    「题解」P5906 【模板】回滚莫队&不删除莫队
    「学习笔记」优美的暴力——莫队
    2017 NOIp提高组 DAY2 试做
  • 原文地址:https://www.cnblogs.com/rrb520/p/5600818.html
Copyright © 2011-2022 走看看