简化java_Java泛型太复杂了?如何简化?
最初我在codereview上发布了这个问题,但这可能更适合stackoverflow。
我用Java 6编码一个多步骤的过程。假设有3个步骤。
每个都接受相同类型的输入。
我们开始吧。
这是作为输入传递给每个步骤的对象。此对象作为另一类型对象的包装,与某些步骤的共享值一起使用。
请注意,名称被翻译成更通用的域名,英文原版是意大利语。
public class EntityStepInput {
public final T entity;
public boolean modified;
public boolean canceled;
public EntityStepInput(final T entity) {
this.entity = entity;
}
}
这是每个步骤使用的接口。
public interface EntityStep> {
void process(final T stepInput) throws Exception;
}
现在,三个步骤中的两个必须接受
EntityStepInput
其中包含
Entity
或从中派生的任何类型。
public class FirstEntityStep implements EntityStep> {
@Override
public void process(final EntityStepInput extends Entity> stepInput) throws Exception {}
}
public class SecondEntityStep implements EntityStep> {
@Override
public void process(final EntityStepInput extends Entity> stepInput) throws Exception {}
}
最后一步必须接受
实体步骤输入
其中包含派生自
实体
.
public class ThirdEntityStep implements EntityStep> {
@Override
public void process(final EntityStepInput extends DerivedEntity> stepInput) throws Exception {}
}
这种用法相当严格。我有超负荷的方法可以接受不同类型的
实体
下面是一个简化版。
public void workWithEntity(final DerivedEntity entity) throws Exception {
final EntityStepInput stepInput = new EntityStepInput(entity);
stepOne.process(stepInput);
stepTwo.process(stepInput);
stepThree.process(stepInput);
}
你可以看到
DerivedEntity
类型可以使用所有步骤。
public void workWithEntity(final OtherDerivedEntity entity) throws Exception {
final EntityStepInput stepInput = new EntityStepInput(entity);
stepOne.process(stepInput);
stepTwo.process(stepInput);
}
这里还有另一种
实体
不能使用最后一步,这是我想要的。
现在,这已经变得非常复杂的仿制药。我担心在我走后谁会读我的代码,不会理解,迟早会搞得一团糟。
这是可简化的吗?你的方法是什么?尽可能尊重单一责任原则?
编辑。
实体
层次结构如下:
Entity > DerivedEntity
Entity > OtherDerivedEntity
简化java_Java泛型太复杂了?如何简化?相关推荐
- 杭电oj1062题c语言答案,杭电大OJ题1062,为什么这样的代码会Time Limited exceed,是太复杂了吗?...
杭电大OJ题1062,为什么这样的代码会Time Limited exceed,是太复杂了吗?0 问题ProblemDescriptionIgnatiuslikestowritewordsinreve ...
- 如果是能简单解决的问题,就不用想得太复杂了
有个朋友在MSN问我说,有没有关于Emit的资料,它想生成一个类的动态代理.他抱怨Emit还是很麻烦,不过交谈过后知道他是想要做什么.他希望为一个对象的某个属性作延迟加载,这样可以避免一些无谓的消耗. ...
- 鸽了!华米科技智能手表部分款将推迟开售 工艺太复杂了
昨晚,华米科技发布部分商品推迟开售的公告表示,由于全陶瓷表身工艺十分复杂.加工难度很高,导致原定于本月上市的AMAZFIT智能手表2 ECG版和复仇者联盟系列限量版无法按时开售,后续上市日期确定之后, ...
- java中的随机生成算法_随机生成算法的java代码太复杂了
public static Integer[] generateRandomArray(int n, int rangeL, int rangeR) { assert rangeL <= ran ...
- 突然发现高中时候的“概率”老师都讲的太复杂了
高中的概率题目,主要分为三部分:有放回.无放回.几何,其中几何暂且不说 有放回: 无放回: 我这里写的比较简略,主要想表达的是,其实在高中时候老师总是讲无放回的情况就是有放回再除以一个排序量,这样抵消 ...
- 获取roe,最好给财务做一个单独的表格,别直接连进去,太复杂了,那就
# -*- coding:utf-8 -*- import pandas as pd import pymysql from sqlalchemy import create_engine ## 加上 ...
- 陳三甲网络笔记:赚钱这件事,你别搞复杂了,简单点
老年人相信一切,中间人怀疑一切,青年人什么都懂 . 我喜欢看小说,特别喜欢看各种武侠小说,一个男人应该都有一个武侠梦吧!在小说里面把各种武功都有分等级的:初学乍练.初窥门径.登堂入室.略有小成.融会 ...
- 简单的OPC与C#通讯,别想复杂了
简单的OPC与C#通讯,别想复杂了 using System; using System.Collections.Generic; using System.ComponentModel; using ...
- el table 固定表头和首行_表头太太太复杂了,如何批量打印?简单!
点击上方蓝字关注星标★不迷路 本文作者:小敏本文编辑:小叮.竺兰 打印工资条估计是财务老师的痛,要把一行行的数据,变成一条条的工资条. 数据很多,表头很复杂. 一个个复制粘贴?那是不可能的! 那怎么办 ...
最新文章
- html转义字符对照表
- 《人脸识别原理及算法——动态人脸识别系统研究》—1章1.2节人脸识别相关学科的进展...
- 一天搞定CSS: CSS选择器优先级--08
- MapHack源代码
- 安装mysql查看随机密码命令_linux安装mysql-8.0.21-1.el7.x86_64.rpm-bundle - 君主-bye
- 模板类 Template Classes 以及模板类编译时的处理
- OpenStack精华问答 | OpenStack服务介绍
- python星号什么意思_Python星号*与**用法分析
- 【NOIP2008】【Vijos1493】传纸条
- 使用PowerShell脚本部署定时器到MOSS2010(原创)
- LDA话题模型与推荐系统
- mac安装java环境
- NPDP知识推送-第三章新产品开发流程管理(1)
- 万王之王手游服务器维护,万王之王手游-KOK-官方网站-腾讯游戏-一个世界的重新开启...
- 感知机为什么不能表示“异或”?
- CodeForces 950C Zebras
- iOS之深入探究动画渲染降帧
- Microsoft AjaxToolkits之15. RoundedCorners控件
- quartus II 过期怎么办?
- KindEditor编辑器结合EasyUi
热门文章
- 在html页面中怎么打印区域,javascript打印web页面中指定区域的方法
- 二进制文本编辑器_Textadept for mac(文本编辑) v10.5免费版
- 你的ERP系统选对了吗?
- linux中改localhome名称,修改 /var/lib/locales/supported.d/local 文件(使用 locale -a 命令查看系統中所有已配置的 locale)...
- java jdbc sql 参数_java – Postgresql JDBC表值参数
- 数学建模-7.多元线性回归分析
- pytorch:属性统计
- redis_基础_基本使用
- Git-删除文件后找回-比较文件差异
- 人民邮电出版社与作者陈黎夫共同举办在线编辑、作者交流活动