美文网首页
策略模式

策略模式

作者: Stroman | 来源:发表于2018-10-01 20:03 被阅读16次

    总述

    它把各种不同的算法封装成对象然后使用。

    类图

    策略模式.png

    效果

    具体策略1
    具体策略2
    具体策略3
    
    Process finished with exit code 0
    

    调用

    package com.company;
    
    public class Main {
    
        public static void main(String[] args) {
        // write your code here
            User user = new User(new Strategy1());
            user.doIt();
    
            user = new User(new Strategy2());
            user.doIt();
    
            user = new User(new Strategy3());
            user.doIt();
        }
    }
    
    

    使用者

    package com.company;
    
    public class User {
        StrategyInterface strategy;
    
        /**
         * 构造带有不同的策略对象的构造方法。
         * @param strategy
         */
        public User(StrategyInterface strategy) {
            this.strategy = strategy;
        }
    
        /**
         * 执行策略的方法。
         */
        public void doIt() {
            this.strategy.executeStrategy();
        }
    }
    
    

    策略接口

    package com.company;
    
    /**
     * 策略模式的通用类型
     */
    public interface StrategyInterface {
        /**
         * 执行具体策略的接口
         */
        void executeStrategy();
    }
    

    策略1

    package com.company;
    
    public class Strategy1 implements StrategyInterface {
        @Override
        public void executeStrategy() {
            System.out.println("具体策略1");
        }
    }
    
    

    策略2

    package com.company;
    
    public class Strategy2 implements StrategyInterface {
        @Override
        public void executeStrategy() {
            System.out.println("具体策略2");
        }
    }
    
    

    策略3

    package com.company;
    
    public class Strategy3 implements StrategyInterface {
        @Override
        public void executeStrategy() {
            System.out.println("具体策略3");
        }
    }
    
    

    相关文章

      网友评论

          本文标题:策略模式

          本文链接:https://www.haomeiwen.com/subject/uywnoftx.html