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


  • 相关阅读:
    精彩源于起点——2018年潍坊市首次青少年Python编程公开课
    第一款Micropython图形化编辑器—Python Editor
    [Micropython]TPYBoard v10x拼插编程实验 点亮心形点阵
    Android-Notification通知Demo
    Android-Handler更新View加线程
    Android-Handler更新View
    Android-Service开发步骤
    Android-高级UI控件_TabHost标签组件
    Android-高级UI控件_SeekBar拖动条
    Android-高级UI控件_ProgressDialog进度条对话框
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7389852.html
Copyright © 2011-2022 走看看