第2.3章 过滤器模式+模板模式设计八字命理的十神分析_模板模式 过滤器模式_warrah的博客-程序员宅基地

技术标签: 岁月云——java基础  过滤器模式  模板模式  

如果单独看《Head First 设计模式》中介绍的23种设计模式,单例模式和工厂模式普通开发工程师能够理解,其他模式UML类画的就较为抽象,实现起来并没有那么复杂,只不过要用图形来展现,显的专业的话,就有些麻烦。但是80%的开发工程师能够容易理解吗,我认为大多数人知道继承和实现,就通过这两种方式组合,已经说命了很多问题。
古人发明四柱八字,子平讲十神定位,如果通过计算机来实现子平的模型,按照梁湘润老师根据四柱的十神定位做单式静态分析,这个用java实现也比较容易。
设计模式不是说学了23种,每一种都是单独使用,更多的时候打的是设计模式的组合权。
比如下图,就是使用了过滤器模式和模板模式。
使用算法模式,是因为十神定位,无非是分析年干支、月干支、日柱、时干支,对食神、劫财、比肩等都是一样的。
使用过滤器模式,是想使每种方式调用统一,这里面没有用阻断,因为没必要阻断,说谁一要阻断呢?
1
1 SsFilter接口

package com.dzmsoft.bazi.shishen.filter;

import java.util.List;

import com.dzmsoft.bazi.base.common.SexEnum;
import com.dzmsoft.bazi.base.dto.AssertionDto;
import com.dzmsoft.bazi.base.pojo.BaZi;

/**
 * 十神分析
 * @author dzm
 *
 */
public interface SsFilter {
   
    
	void doFilter(BaZi bazi, SexEnum sex, List<AssertionDto> assertions,SsFilterChain chain);
}

2 SsFilterChain
这里定义了一个过滤器链条filters,通过addFilter添加过滤器,它的doFilter实现是从过滤器链中获取一个过滤器,进行执行

package com.dzmsoft.bazi.shishen.filter;

import java.util.ArrayList;
import java.util.List;

import com.dzmsoft.bazi.base.common.SexEnum;
import com.dzmsoft.bazi.base.dto.AssertionDto;
import com.dzmsoft.bazi.base.pojo.BaZi;

public class SsFilterChain implements SsFilter {
   
    
	List<SsFilter> filters = new ArrayList<SsFilter>(); 
	int index = 0;  
	
	public SsFilterChain addFilter(SsFilter f) {
   
      
        this.filters.add(f);  
        return this;  
    }  

	@Override
	public void doFilter(BaZi bazi, SexEnum sex, List<AssertionDto> assertions,SsFilterChain chain) {
   
    
		if(index == filters.size()) return ;  
		SsFilter f = filters.get(index);  
        index 
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/warrah/article/details/86287495

智能推荐

二手房房价预测案例 -- 基本概念以及模型应用_二手房价预测模型假设_~/的博客-程序员宅基地

分离变量:二分类变量0,1 连续变量(有具体数值含义) 查看样本量&数据描述(print("%d",datall.shape[0])/ dat0.describe(include="all").T ) 二分类变量取频数 画箱线图分析,连续变量与Y变量(价格)同时取对数 相关系数矩阵 画散点图分析 逐个检验变量的解释力度..._二手房价预测模型假设

去除人声--安装和使用spleeter分离人声和背景声_咿呀咿呀咿呀哟的博客-程序员宅基地

文章目录前言一、最后效果是什么样的?二、安装1.打开官网三、安装spleeter模块前言最近处理音视频,想把音频中的人声去掉,保留背景音乐。网上说AU 有人声移除的功能,我想AU竟然如此强大,于时去下载了AU,去除人声之后,整个都没有声音了。原因可能是:原音频看起来是立体声,实际上左声道和右声道是相同的,而人声消除的原理恰恰是消除左声道与右声道相同的声音,这样一搞自然就什么声音都没了。之后发现网上有很多吐槽AU的中置._spleeter

MFC CListCtrl控件基本使用图解_mfc的list control控件实现单元格合并-程序员宅基地

新建一个对话框工程;1_mfc的list control控件实现单元格合并

mybatis复习(3)----resultMap属性映射问题(association和collection)_mybatis3 resultmap collection_长乐未央丫的博客-程序员宅基地

association现在有一个需求: 查询所有学生的信息,以及对应的老师姓名建立pojoTeacher类: 有 属性 id ,nameStudents类: 有属性 id , name ,Teacher根据需求可以写出mysql语句:select s.id, s.name, t.name from student s, teacher t where s.tid=t.id;实现方法1(查询嵌套处理)查询结果:然而,在mapper.xml实现中,会遇到一个问题: Teache_mybatis3 resultmap collection

原码, 反码, 补码 详解_diaoshisun9421的博客-程序员宅基地

本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中的二进制表示形式, 叫做..._计算159原码

手机号码 正则表达式_weixin_30293135的博客-程序员宅基地

代码如下: 1 package TestRegex; 2 3 import java.util.regex.Matcher; 4 import java.util.regex.Pattern; 5 6 public class Test01 { 7 /** 8 * 手机号码正则表达式:"^[1][3,5,7,8][0-9]\\d{8..._请写出以下定义的手机号码的正则表达式

随便推点

登录超时,返回到登录页面 vue_vue登录超时返回登录页面_随意花的博客-程序员宅基地

登录超时,返回到登录页面 vue首先登录的时候,将登录接口返回的token用localStorage保存起来,然后在axios的请求拦截里将token添加到请求头部header里,作为之后前后端的通信票据axios.interceptors.request.use(config => { var data = {} if (typeof (config.data) =..._vue登录超时返回登录页面

数组遍历的几种方法及用法_遍历数组_一笑而泯的博客-程序员宅基地

js提供了多种遍历数组的方法,具体使用场景略有区别,在此简单介绍一下。一、forEach方法forEach是最简单、最常用的数组遍历方法,它提供一个回调函数,可用于处理数组的每一个元素,默认没有返回值。以上是个简单的例子,计算出数组中大于等于3的元素的个数。回调函数的参数,第一个是处于当前循环的元素,第二个是该元素下标,第三个是数组本身。三个参数均可选。二、map方法m..._遍历数组

小程序 JSON.stringify() 和 JSON.parse() 的使用_微信小程序json.parse_逸曦穆泽的博客-程序员宅基地

序:咋说呢!嗯,就是传值不用写那么多,直接传一个键值就可以了,就是为了简便。_微信小程序json.parse

深度概览卷积神经网络全景图,没有比这更全的了!_大数据v的博客-程序员宅基地

导读:深度卷积神经网络是这一波 AI 浪潮背后的大功臣。虽然很多人可能都已经听说过这个名词,但是对于这个领域的相关从业者或者科研学者来说,浅显的了解并不足够。近日,约克大..._卷积神经网络模型图

MSComm串口类的使用 (程序设计)_mscomm.output_孤燕奕飞的博客-程序员宅基地

参考文档:http://wenku.baidu.com/link?url=MLGQojaxyHnEgngEAXG8oPnISuM9SVaDzNTvg0oTSrrJkMXIR_6MR3cO_Vnh-grkUekLw2CSnQlE2ni5P-CzCCyI36fnNFFl_BkbEbMomP_ MSComm在VS2010中的实现过程 注:在vs2010中MSComm类中一些函_mscomm.output

[PHP]PHP函数___Daniel的博客-程序员宅基地

字符串 STRING>> 统计strlen(string) - 长度strcmp(string1,string2) - 比较字符串 >> 查找strpos(string,find,start) - 在另一个字符串中查找, 返回第一次位置 stripos(string,find,start) - (大小写不敏感)