• 设计模式之 策略模式


    策略模式为同一个行为定义了不同的策略,并为每种策略都实现了不同的方法。在用户使用时,系统根据不同的策略自动切换不同的方法来实现策略的改变。同一个策略下的不同方法是对同一功能的不同实现,因此在使用时可以相互替换而不影响用户的使用。

    image

    (1)定义策略模式接口

    public interface TravelStrategy{
        void travelMode();
    }

    (2)定义策略实现

    public class TravelByAirStrategy implements TravelStrategy{
        private final static Log logger = LogFactory.getLog(this.getClass());
    
        @Override
        public void travelMode(){
            logger.info("travel by air");
        }
    }
    
    public class TravelByCarStrategy implements TravelStrategy{
        private final static Log logger = LogFactory.getLog(this.getClass());
    
        @Override
        public void travelMode(){
            logger.info("travel by car");
        }
    }

    (3)定义上下文实现策略模式

    public class Context{
        private TravelStrategy travelStrategy;
        public TravelStrategy getTravelStrategy(){
            return travelStrategy;
        }
    
        public void setTravelStrategy(TravelStrategy travelStrategy){
            this.travelStrategy = travelStrategy;
        }
    
        public void travelMode(){
            this.travelStrategy.travelMode();
        }
    }

    (4)使用策略模式

    public static void main(String[] args){
        Context context = new Context();
        // travel by air
        TravelStrategy travelByAir = new TravelByAirStrategy();
        context.setTravelStrategy(travelByAir);
        context.travelMode();
    
        // travel by car
        TravelStrategy travelByCar = new TravelByCarStrategy();
        context.setTravelStrategy(travelByCar);
        context.travelMode();
    }

  • 相关阅读:
    单例模式(上)单例常见的实现方式
    Netty(六)揭开 BootStrap 的神秘面纱
    Netty(五)Netty 高性能之道
    Netty(四)基于Netty 的简易版RPC
    Netty(三)基于Bio和Netty 的简易版Tomcat
    Netty(二)Netty 与 NIO 之前世今生
    java学习笔记
    Java使用笔记之对象比较
    React学习之受控和非受控组件
    SpringBoot学习之常用注解
  • 原文地址:https://www.cnblogs.com/betterwgo/p/15233087.html
Copyright © 2020-2023  润新知