`
qingniu
  • 浏览: 21098 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Enum 在奇门建模中的应用

阅读更多

         本人喜爱周易,所以就琢磨着想给奇门遁甲建个模型。现在网上已有很多排盘工具,收费、免费的都有,本人也不想重复发明轮子,排盘之后,就应该进入预测阶段了,所以提供预测功能才是我的目标。我的计划是先做手机号码在线预测,下一步再开始八字、星座、姓名等。下面就来谈谈建模的问题。

          熟悉奇门遁甲的人都知道,一个盘包括天盘天干、地盘天干、九星、八门、八神、九宫、五行等,这其中每一个都是由固定的几个常量组成,比如八门就是由休门、生门、伤门、杜门、景门、死门、惊门、开门组成(不了解奇门的人会以为我有意卖弄,呵呵,但这却是奇门最基本的常识了),而且每一个常量都有五行属性,五行之间又有生克比和关系。这些常量,如果用传统的interface来定义,差不多是下面样子(我直接用了中文):

public interface Men {
	public static final String XIU = "休";
	public static final String SHENG = "生";
	public static final String SHANG = "伤";
	public static final String DU = "杜";
}


      在enum之前,都是用这种方式声明常量的,虽能实现功能,但缺点很明显,一个是你要保证类型是String,另一个是要确保值的范围在这四个之中。使用enum,这些问题不复存在,而且还可以像普通类一样,定义方法、构造函数、实现接口,以一种更优雅的方式解决问题。

      下面把代码贴出来,看看用enum是如何声明八门的:

 

package com.gavin.mobile.model.enumeration;

import java.util.HashMap;

import com.gavin.mobile.model.IWuxing;

/**
 * 八门,外加一个“中门”,共九个
 * @author Qingniu
 *
 * @creation 2010-5-13
 *
 */
public enum Men implements IWuxing {
	xiu("休",Wuxing.shui),si("死",Wuxing.tu),shang("伤",Wuxing.mu),du("杜",Wuxing.mu),
	zhong("中",Wuxing.tu),kai("开",Wuxing.jin),jing7("惊",Wuxing.jin),sheng("生",Wuxing.tu),jing9("景",Wuxing.huo);
		
	
	Men(String value,Wuxing wuxing) {
		this.value = value;
		this.wuxing = wuxing;
	}

	private final String value;
	private final Wuxing wuxing; 
	
	public String getValue(){
		return value;
	}
	public Wuxing getWuxing() {
		return wuxing;
	}
}

      从代码中可以看到,该enmu类不仅定义了构造函数,还定义了普通方法,实现了一个借口,怎么样,是不是比传统interface定义方式优雅很多。类似的,包括五行、天干、九星、八神等全部用enum声明,为奇门建模带来很大方便。

        

 

0
0
分享到:
评论
1 楼 mercyblitz 2010-07-16  
楼主可以看看,我之前写的文章:
http://mercyblitz.iteye.com/blog/664600

相关推荐

    C++中枚举类型(enum)

    在实际应用中,枚举类型常用于表示位标志(bit flags),即通过组合不同的枚举值来表示多种状态。例如,在文件访问权限的场景中: ```cpp enum FileAccess { Read = 0x1, // 二进制形式为0001 Write = 0x2, // 二...

    Options:有时在某些情况下,您想在OptionSet中使用Enum或希望Enum由Raw的Int类型支持,但同时也具有String标签

    目录介绍特征安装用法设置一个MappedValueRepresentable枚举使用MappedValueCollectionRepresented 使用MappedEnum类型的可编码枚举在ESet中使用OptionSet中的EnumSet 将EnumSet转换为Enum数组使用...

    enum 结构分析源码

    在`enum.c`源码中,可能会包含一些示例,展示如何声明、初始化和使用枚举,以及可能涉及枚举在实际项目中的应用,比如在一个简单的颜色选择器程序中。通过阅读和分析这个源码,你可以深入理解C语言中枚举的工作原理...

    enum类型重定义解决方法

    在编程中,`enum`(枚举)类型是用来定义一组命名的整数常量,它在C++中被广泛使用。然而,在某些情况下,我们可能会遇到`enum`类型的重定义问题,这通常发生在包含不同库或者头文件时,因为这些库可能已经定义了...

    Java中的Enum的使用与分析

    在Java编程语言中,`Enum`是一种特殊的数据类型,用于处理一组固定的常量。它不仅提供了一种更安全、更灵活的方式来表示一组固定的选择,还包含了丰富的内置功能,使得枚举类型成为Java开发中不可或缺的一部分。 ##...

    Laravel开发-laravel-enum

    在Laravel框架中,枚举(Enum)是一种实用的工具,可以帮助我们更好地组织代码,提高可读性和可维护性。Laravel Enum库是为Laravel应用程序设计的一个扩展,它允许开发者使用枚举类型来替代传统的常量或字符串,从而...

    java enum 枚举 学习资料

    在 Java 中,枚举类型是用 enum 关键字来定义的。枚举元素列表必须写在枚举类的最前面,每个元素之间用逗号隔开,元素列表结束位置后若没有其他内容,则可以不写分号,否则必须要写。例如: ```java public enum ...

    Enum的用法

    ### Enum的深度解析与应用技巧 #### 一、Enum的本质与特性 `Enum`,作为Java语言中的一个关键字,自JDK 5.0引入以来,便赋予...在日常编程实践中,灵活运用`Enum`的各种特性,将有助于构建更加健壮、高效的应用系统。

    enum测试代码

    下面将详细讨论enum在不同编程语言中的应用、特性以及如何进行测试。 在Java中,枚举是一种类,可以包含方法和变量。创建枚举的基本语法如下: ```java public enum Color { RED, GREEN, BLUE } ``` 这里的Color...

    Laravel开发-enum

    在Laravel框架中,"enum"(枚举)是一种实用的工具,用于限制特定属性或方法的值只能是预定义的一组。PHP在版本8.0中引入了对枚举的支持,这使得在 Laravel 开发中更加方便地处理固定选项的数据类型。本教程将深入...

    Java enum的用法详解

    如果我们想要在 enum 中添加新的方法,那么必须在 enum 实例序列的最后添加一个分号。例如: ```java public enum Color { RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLOW("黄色", 4); // 成员变量...

    JAVA高级编程中Enum枚举

    在Java编程语言中,`Enum`(枚举)是一种特殊的类类型,用于定义固定的、预定义的常量集合。它们在程序设计中扮演着重要的角色,特别是在需要表示一组固定值时,如状态、颜色、星期等。本资源包提供了一些关于`Enum`...

    DoctrineEnumBundle, 在Symfony应用程序中,为 Doctrine 提供enum 类型的支持.zip

    DoctrineEnumBundle, 在Symfony应用程序中,为 Doctrine 提供enum 类型的支持 DoctrineEnumBundle为 enum 应用程序中的Doctrine 提供类型支持。 支持平台sql SQLite sql SQLite安装通过编辑器添加依赖项co

    Python库 | enum-0.4.7.tar.gz

    在这个场景中,我们关注的是一个名为"enum"的Python库,其版本为0.4.7,封装在"enum-0.4.7.tar.gz"的压缩包文件中。这个压缩包通常包含了库的所有源代码、文档和其他相关资源。 `enum`是Python中的一个内置库,自...

    java enum 枚举的spring boot2.x完美实现demo源码

    综上所述,`java enum 枚举的spring boot2.x完美实现demo源码`示例主要展示了如何在Spring Boot 2.x项目中使用枚举类型,包括枚举的定义、属性和方法的添加,以及如何在实际业务场景中应用枚举,如与数据库的交互和...

    Java枚举类型Enum的用法

    在枚举内部,可以通过`Enum<E extends Enum<E>>`的泛型方法`getDeclaringClass()`获取枚举常量所属的枚举类,以及`name()`和`ordinal()`方法获取常量的名称和在枚举中的位置。 总结来说,Java枚举类型提供了一种...

    Java Enum使用Demo源码

    在Java编程语言中,枚举(Enum)是一种特殊的类,用于定义固定的常量集合。它在许多场景下比常量接口或静态final变量更安全、更方便。本篇将通过"Java Enum使用Demo源码"深入探讨Java枚举的用法。 首先,枚举在Java...

Global site tag (gtag.js) - Google Analytics