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

  • 相关阅读:
    nginx 下 bootstrap fa 字体异常问题
    centos7 & mysql
    ssh authentication魔鬼细节--.ssh文件夹权限
    python self introspection
    __getattr__ 与动态属性
    dict.items vs six.iteritems
    django ATOMIC_REQUESTS
    HDU 4309 Seikimatsu Occult Tonneru (状压 + 网络流)
    UVaLive 4064 Magnetic Train Tracks (极角排序)
    UVa 11645 Bits (暴力+组合数学)
  • 原文地址:https://www.cnblogs.com/rrb520/p/5600818.html
Copyright © 2011-2022 走看看