策略模式

设计模式--策略模式

结构

  • 一个环境类
  • 一个抽象策略类
  • 多个具体策略类

概述

具体策略类继承实现抽象策略类,通过环境类,将抽象策略类引用的具体策略类对象传入环境类,外界只需跟环境类交互;
添加新具体策略类比较方便,直接添加,继承实现抽象策略类即可;

例子

  • 功能
    • 实现两个浮点数加减法功能的策略模式
    • 环境类Context
    • 抽象策略类OperationStrategy
    • 具体策略类AddStrategy/SubStrategy
  • 代码
	abstract class OperationStrategy {
		public abstract void getResult(double a, double b);
	} 
	
	class AddStrategy : OperationStrategy {
		@override
		public double getResult(double a, double b) {
			return a + b;
		}
	}

	class SubStrategy : OperationStrategy {
		@override
		public double getResult(double a, double b) {
			return a - b;
		}
	}

	class Context {
		OperationStrategy opStrategy = null;
		public Context (OperationStrategy opStrategy) {
			this.opStrategy = opStrategy;
		}
		
		public double getResult(double a, double b) {
			return opStrategy.getResult(a, b);
		}
	}

	//客户端代码
	main () {
		OperationStrategy opStrategy = new AddStrategy();
		Context context = new Context(opStrategy);
		double result = context.getResult(2, 3);
	}
  • 类图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值