策略枚举模式

先看看策略模式:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(原文:The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it.)。

策略枚举模式是设计模式中策略模式(Strategy),在Java中借助Enum得以实现。对于策略模式,使用者需要知道目前所有的策略,即使只使用一种策略。为了解决此问题,策略枚举模式将各种的策略包装成枚举。如下代码:

package kevin.handler;

import java.util.List;

/**
 * 
 * 对象断言处理器,使用策略枚举设计模式
 * 
 * @author kevin.lee
 * @since 2012-7-23 上午08:02:11
 * 
 */
public enum ObjectAssertHandler {

	/** 非空断言器 */
	NotNull {
		@Override
		public <T> T doAssert(T t, String desc) throws Exception {
			if (t == null) {
				throw new Exception(desc);
			}
			return t;
		}
	},

	/** 非空List断言器 */
	NotEmptyList {

		@SuppressWarnings("rawtypes")
		@Override
		public <T> T doAssert(T t, String desc) throws Exception {
			NotNull.doAssert(t, desc); // 先进行非空断言
			if (t instanceof List) {
				if (((List) t).isEmpty()) {
					throw new Exception(desc);
				}
			} else {
				throw new Exception("不是需要的java.util.List类型");
			}
			return t;
		}

	};

	/**
	 * 对于对象进行断言
	 * 
	 * @Description:
	 * @param <T>
	 * @param t 对象
	 * @param desc 描述信息
	 * @return
	 * @throws Exception
	 * @author kevin.lee
	 * @since:2012-7-23 上午08:10:44
	 */
	public abstract <T> T doAssert(T t, String desc) throws Exception;
}

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值