`
sony-soft
  • 浏览: 1105068 次
文章分类
社区版块
存档分类
最新评论

策略枚举模式

阅读更多

先看看策略模式:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(原文: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;
}

分享到:
评论

相关推荐

    详解SpringBoot结合策略模式实战套路

    SpringBoot结合策略模式实战套路 策略模式是一种常用的设计模式,它可以使我们的代码更加灵活、可维护和可扩展。在SpringBoot项目中,策略模式可以与依赖注入机制相结合,实现更加灵活的业务逻辑处理。在本文中,...

    Java策略模式的使用(枚举策略与简单工厂策略)

    后端同学在开发过程中,势必会遇到多条件判断的情况,大部分时候都会直接采用if-else的形式去处理,这样的操作会存在不易扩展的问题,那么...对比枚举策略与简单工厂+策略模式的不同使用,抛砖引玉,引发你更多的思考

    Java策略模式+案例

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式允许我们定义一组算法或策略,并将每个策略封装为一个类,使得它们可以互换,而不会影响到客户端代码。这种模式的核心在于"策略",...

    策略模式 演化过程 重构过程

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或场景来改变算法的情况。策略模式就是为了解决这类问题而诞生的,它将每种算法封装到具有共同接口的...

    策略模式工厂方法模式观察者模式

    本资源主要涵盖了三种经典的设计模式:策略模式、工厂方法模式以及观察者模式,对于初学者来说是非常有价值的学习资料。 **策略模式**是一种行为设计模式,它使你能在运行时改变对象的行为。在策略模式中,一个类的...

    设计模式之禅之 工厂方法模式+策略模式

    ### 设计模式之禅之 工厂方法模式+策略模式 #### 一、概述 《设计模式之禅》第35章介绍了工厂方法模式与策略模式的结合运用,旨在通过一个具体的案例——“一卡通”交易系统的设计,来展现如何在实际项目中灵活...

    设计模式—策略模式

    同时,如果策略之间的差异不大,可能更适合使用简单的条件语句或枚举类型,而不是引入额外的类层次结构。 总的来说,策略模式是一种强大的设计模式,它通过将算法封装为独立的类,提高了代码的可复用性和可扩展性,...

    Java开发模式之策略模式

    此外,如果所有策略之间的差异不大,可能更适合使用简单工厂模式或枚举。 在实际开发中,策略模式常用于解决以下问题: - 当系统中有多种算法可供选择时,例如排序、搜索、支付方式等。 - 当算法的使用场合及算法...

    java设计模式之——策略模式

    在阅读《Effective Java》等编程书籍时,会发现作者常常推荐使用策略模式来代替使用重载方法或枚举类型,因为这提供了更好的灵活性和可扩展性。 总结一下,策略模式是设计模式中的重要一环,它通过将算法封装在独立...

    枚举小结

    枚举在设计模式中的应用之一是策略模式。枚举可以作为策略的实现,每个枚举实例代表一种策略,这样既能保证类型安全,又能减少代码量。另一个例子是工厂模式,枚举可以用来决定创建哪种类型的对象,避免了硬编码字符...

    微信小程序--使用策略模式进行表单验证strategy-master.zip

    为了便于使用,项目中可能还包含了一些预定义的验证策略常量或枚举,例如`VALIDATION_STRATEGY.NOT_EMPTY`、`VALIDATION_STRATEGY.EMAIL`等。这样,开发者在编写代码时,可以通过这些常量来指定所需的验证策略,而...

    Java中的枚举类型Enum示例源代码

    枚举类型还可以用于实现策略模式、状态机等设计模式,提供了比常量类更安全、更灵活的解决方案。 总之,Java的枚举类型`Enum`不仅提供了对常量集的封装,还具备了类的所有功能,包括方法、构造函数和继承。它极大地...

    列举java 枚举相关信息

    - **策略模式**:通过不同的枚举值实现不同的策略。 - **事件类型**:定义不同的事件类型,在事件驱动系统中非常有用。 #### 六、枚举类型的注意事项 尽管枚举类型提供了很多便利,但在使用时也需要注意以下几点: ...

    Java设计模式之策略模式详解

    Java设计模式中的策略模式是一种...策略模式的扩展,如策略枚举,可以将策略集中在一个枚举类型中,以更简洁的方式实现策略选择。在上述示例的题目中,可以通过策略枚举实现加法和减法运算,使得算法选择更加简洁明了。

    策略模式之商场收银软件

    一种方式是使用工厂类或者枚举类型来创建和选择策略,这样可以确保代码的整洁和可维护性。 例如,我们可以创建一个`PromotionFactory`来根据输入参数创建相应的策略实例: ```cpp class PromotionFactory { public...

    实例179 - 高效的枚举元素组合

    在IT行业中,枚举元素组合是一个常见的编程问题,特别是在处理多状态系统或者设计模式时。本文将基于"实例179 - 高效的枚举元素组合"这一主题,深入探讨如何高效地处理枚举类型及其组合。我们将不涉及具体的源代码...

    Java利用策略模式优化过多if else代码

    Java利用策略模式优化过多if else代码 策略模式是一种非常有用的设计模式,可以帮助开发者优化代码,避免过多的if else语句。下面是关于策略模式的知识点总结: 1. 什么是策略模式? 策略模式是一种行为型设计...

    JAVA枚举JAVA枚举.doc

    7. **枚举抽象方法**:可以在枚举类型中定义抽象方法,每个枚举实例都必须提供相应的实现,这在策略模式等设计模式中很有用。 例如,我们可以为 `Color` 枚举添加一个返回英文名的方法: ```java public enum Color...

    实例181 - 遍历枚举接口的元素

    在策略模式中,每种枚举常量代表一种策略,遍历这些枚举可以让我们动态地选择和切换策略。 总的来说,理解和熟练掌握枚举接口的遍历对于编写高质量的Java代码至关重要。通过枚举接口,我们可以实现更安全、可维护的...

    浅谈简单工作流设计——责任链模式配合策略与命令模式的实现

    本文以项目中的一个工作流模块,演示责任链模式、策略模式、命令模式的组合实现!最近在做的一个项目,涉及到的是一个流程性质的需求。关于工程机械行业的服务流程:服务任务流程和备件发运流程。项目之初,需求不是...

Global site tag (gtag.js) - Google Analytics