zoukankan      html  css  js  c++  java
  • 设计模式之策略模式

    什么是策略模式?

    Strategy pattern is mainly about using different algorithm at different situation.

    策略模式。又叫算法簇模式,就是定义了不同的算法族,而且之间能够互相替换,此模式让算法的变化独立于使用算法的客户。


    策略模式的优点在于你能够动态的改变对象的行为。
    一般的。策略模式主要分为下面三个角色: 
    1.环境角色(Context):持有一个策略类引用 
    2.抽象策略(Strategy):定义了多个详细策略的公共接口,详细策略类中各种不同的算法以不同的方式实现这个接口;Context使用这些接口调用不同实现的算法。一般的,我们使用接口或抽象类实现。 

    3.详细策略(ConcreteStrategy):实现抽象策略类中的相关的算法或操作。 

    /**
     * 策略模式首先定义了一个接口行为。实现了接口的子类有不同的行为实现 然后再一个场景类中维护了一个指向接口类的引用。 这样在不同的场景下调用不同的
     * 行为算法来处理
     */
    interface Strategy {
    	// 定义接口方法
    	public void processPrice(int price);
    }
    // VIP待遇
    class Vip implements Strategy {
    	public void processPrice(int price) {
    		System.out.println("VIP用" + price + "元坐在VIP房");
    	}
    }
    // 普通待遇
    class Ordinary implements Strategy {
    	public void processPrice(int price) {
    		System.out.println("Ordinary用" + price + "元坐在普通房");
    	}
    }
    class Situation {
    	private Strategy strategy;
    	public Situation(Strategy strategy) {
    		this.strategy = strategy;
    	}
    	public void handConsumer(int price) {
    		this.strategy.processPrice(price);
    	}
    }
    public class Main {
    	public static void main(String[] args) {
    		Ordinary ord = new Ordinary();
    		Vip vip = new Vip();
    		Situation s1 = new Situation(ord);
    		Situation s2 = new Situation(vip);
    		s1.handConsumer(10);
    		s2.handConsumer(10);
    	}
    }


  • 相关阅读:
    JDK 9 发布仅数月,为何在生产环境中却频遭嫌弃?
    MyBatis 延迟加载,一级缓存,二级缓存设置
    mysql jdbc url
    idea中模块累积编写
    Idea中通过Git将代码同步到GitHub
    HomeBrew安装及使用
    (二)Java秒杀项目之实现登录功能
    (一)Java秒杀项目之项目环境搭建
    Spring实现构造注入
    Mybatis动态SQL之使用foreach完成复杂查询
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7389852.html
Copyright © 2011-2022 走看看