技术标签: 岁月云——java基础 过滤器模式 模板模式
如果单独看《Head First 设计模式》中介绍的23种设计模式,单例模式和工厂模式普通开发工程师能够理解,其他模式UML类画的就较为抽象,实现起来并没有那么复杂,只不过要用图形来展现,显的专业的话,就有些麻烦。但是80%的开发工程师能够容易理解吗,我认为大多数人知道继承和实现,就通过这两种方式组合,已经说命了很多问题。
古人发明四柱八字,子平讲十神定位,如果通过计算机来实现子平的模型,按照梁湘润老师根据四柱的十神定位做单式静态分析,这个用java实现也比较容易。
设计模式不是说学了23种,每一种都是单独使用,更多的时候打的是设计模式的组合权。
比如下图,就是使用了过滤器模式和模板模式。
使用算法模式,是因为十神定位,无非是分析年干支、月干支、日柱、时干支,对食神、劫财、比肩等都是一样的。
使用过滤器模式,是想使每种方式调用统一,这里面没有用阻断,因为没必要阻断,说谁一要阻断呢?
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
分离变量:二分类变量0,1 连续变量(有具体数值含义) 查看样本量&数据描述(print("%d",datall.shape[0])/ dat0.describe(include="all").T ) 二分类变量取频数 画箱线图分析,连续变量与Y变量(价格)同时取对数 相关系数矩阵 画散点图分析 逐个检验变量的解释力度..._二手房价预测模型假设
文章目录前言一、最后效果是什么样的?二、安装1.打开官网三、安装spleeter模块前言最近处理音视频,想把音频中的人声去掉,保留背景音乐。网上说AU 有人声移除的功能,我想AU竟然如此强大,于时去下载了AU,去除人声之后,整个都没有声音了。原因可能是:原音频看起来是立体声,实际上左声道和右声道是相同的,而人声消除的原理恰恰是消除左声道与右声道相同的声音,这样一搞自然就什么声音都没了。之后发现网上有很多吐槽AU的中置._spleeter
新建一个对话框工程;1_mfc的list control控件实现单元格合并
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
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中的二进制表示形式, 叫做..._计算159原码
代码如下: 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首先登录的时候,将登录接口返回的token用localStorage保存起来,然后在axios的请求拦截里将token添加到请求头部header里,作为之后前后端的通信票据axios.interceptors.request.use(config => { var data = {} if (typeof (config.data) =..._vue登录超时返回登录页面
js提供了多种遍历数组的方法,具体使用场景略有区别,在此简单介绍一下。一、forEach方法forEach是最简单、最常用的数组遍历方法,它提供一个回调函数,可用于处理数组的每一个元素,默认没有返回值。以上是个简单的例子,计算出数组中大于等于3的元素的个数。回调函数的参数,第一个是处于当前循环的元素,第二个是该元素下标,第三个是数组本身。三个参数均可选。二、map方法m..._遍历数组
序:咋说呢!嗯,就是传值不用写那么多,直接传一个键值就可以了,就是为了简便。_微信小程序json.parse
导读:深度卷积神经网络是这一波 AI 浪潮背后的大功臣。虽然很多人可能都已经听说过这个名词,但是对于这个领域的相关从业者或者科研学者来说,浅显的了解并不足够。近日,约克大..._卷积神经网络模型图
参考文档:http://wenku.baidu.com/link?url=MLGQojaxyHnEgngEAXG8oPnISuM9SVaDzNTvg0oTSrrJkMXIR_6MR3cO_Vnh-grkUekLw2CSnQlE2ni5P-CzCCyI36fnNFFl_BkbEbMomP_ MSComm在VS2010中的实现过程 注:在vs2010中MSComm类中一些函_mscomm.output
字符串 STRING>> 统计strlen(string) - 长度strcmp(string1,string2) - 比较字符串 >> 查找strpos(string,find,start) - 在另一个字符串中查找, 返回第一次位置 stripos(string,find,start) - (大小写不敏感)