首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

对策枚举模式

2012-07-31 
策略枚举模式先看看策略模式:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替

策略枚举模式

先看看策略模式:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(原文: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 {@Overridepublic <T> T doAssert(T t, String desc) throws Exception {if (t == null) {throw new Exception(desc);}return t;}},/** 非空List断言器 */NotEmptyList {@SuppressWarnings("rawtypes")@Overridepublic <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;}

 

热点排行