设计模式-策略模式

    技术2022-07-10  124

    设计模式-策略模式

    当遇到根据条件选择处理方式的情况,就可以考虑使用策略模式处理这种变化的可能性。

    策略模式是对象行为型模式,关注行为和算法的封装。

    例如你在计划一次多地旅行,在多个目的地间的通勤会选择相同或不同的交通方式

    其中TrafficStrategy是抽象的接口

    public interface TrafficStrategy { void traffic(String departure, String destination); }

    它有三个不同的实现

    public class AircraftTraffic implements TrafficStrategy { @Override public void traffic(String departure, String destination) { System.out.println("乘坐飞机从" + departure + "到" + destination); } } public class SelfDrivingTraffic implements TrafficStrategy { @Override public void traffic(String departure, String destination) { System.out.println("自驾从" + departure + "到" + destination); } } public class HighSpeedRailTraffic implements TrafficStrategy { @Override public void traffic(String departure, String destination) { System.out.println("乘坐高铁从" + departure + "到" + destination); } }

    使用上下文降低耦合

    public class TrafficContext { private TrafficStrategy strategy; public TrafficContext(TrafficStrategy strategy) { this.strategy = strategy; } public void travel(String departure, String destination){ strategy.traffic(departure, destination); } }

    使用

    public class Traval { public static void main(String[] args) { TrafficContext context; context = new TrafficContext(new AircraftTraffic()); context.travel("家", "北京"); context = new TrafficContext(new SelfDrivingTraffic()); context.travel("北京", "上海"); context = new TrafficContext(new HighSpeedRailTraffic()); context.travel("上海", "深圳"); context = new TrafficContext(new AircraftTraffic()); context.travel("深圳", "家"); } }

    策略模式可以用来封装几乎任何类型的规则,遇到在不同时间使用不同业务规则的状况,可以考虑使用

    Processed: 0.013, SQL: 9