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

    Strategy Pattern

    1. 定义策略模式定义了算法族(实现同一个接口),分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
    2. 场景实现一个功能有多种策略(算法),我们可以根据环境或者条件来选择一个。
    3. OO原则
      • 封装变化的部分,把变化的部分独立出来不影响不变的部分,使系统更有弹性
      • 多用组合,少用继承
      • 针对接口编程,不针对实现编程

    示例场景

    某宝通过蚂蚁积分升级会员,大众会员具有最基本的特权,升级为黄金会员,铂金会员,钻石会员后有对应的特权。

    类图

    示例代码

    环境Context类

    public class Vip {
    
    	//将会员特权委托(delegate)给接口的对象处理
    	public Privilege privilege;
    	
    	public void performPrivilege() {
    		privilege.display();
    	}
    	
    	//运行时动态指定行为
    	public void setPrivilege(Privilege privilege) {
    		this.privilege = privilege;
    	}
    	
    	public void basic() {
    		System.out.println("fundamental rights");
    	}
    }
    

    抽象策略类

    
    public interface Privilege {
    	public void display();
    }
    

    具体策略类

    
    public class BasicMember implements Privilege {
    
    	@Override
    	public void display() {
    		System.out.println("i'm common");
    	}
    
    }
    

    测试类

    
    public class Test extends Vip{
    
    	public Test() {
    		//默认大众会员
    		privilege = new BasicMember();
     	}
    	public static void main(String[] args) {
    		Vip vip = new Test();
    		vip.basic();
    		vip.performPrivilege();
    		vip.setPrivilege(new GoldMember());
    		vip.performPrivilege();
    	}
    }
    

    输出结果

  • 相关阅读:
    基于keepalived双主模型的高可用LVS
    ViewFlipper实现ViewPager的页面切换效果
    C++,Python,Go对照学习-01
    matlab figure 调整大小、字体、线宽
    学术研究 —— 常用结论、说法
    学术研究 —— 常用结论、说法
    OpenGL(十六) 鼠标、键盘交互响应事件
    N+1:创新点的设计
    N+1:创新点的设计
    数学中的物理、几何概念与含义
  • 原文地址:https://www.cnblogs.com/pycrab/p/8906462.html
Copyright © 2011-2022 走看看