到底用什么设计模式

duhongsheng 2017-11-13 11:47:18
我有一个小项目就是实验室检测这块。共有几个检测项:梅毒、丙肝、爱滋...每个项目用不同的试剂,试剂又是不同厂家的,过一阵可能又用别的厂家了,计算公式是不一样的,用什么设计模式比较好啊,头疼得狠。
...全文
829 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
duhongsheng 2017-11-13
  • 打赏
  • 举报
回复
谢谢,我也是在犹豫了,刚买了本书看,这块完全不知取舍。
正怒月神 2017-11-13
  • 打赏
  • 举报
回复
以后增加一个试剂,也就只是增加一个实现公式的class而已,不影响整体模块就好了。 至于是策略模式,还是工厂模式。这个比较随意。
正怒月神 2017-11-13
  • 打赏
  • 举报
回复
如果只从你的字里行间来分析,听起来惯用的工厂模式就好啦。 public class Base { 商品名 商品价格 方法:计算公式 } public class 试剂A: base { 实现公式 } public class 试剂B: base { 实现公式 }
duhongsheng 2017-11-13
  • 打赏
  • 举报
回复
自顶一下,消灭零回复
duhongsheng 2017-11-13
  • 打赏
  • 举报
回复
一般来说会计算阴性值、阳性值、空白值、CUTOFF值等几个方法。我准备在接口里声明这几个方法,然后一个个类地实现算法。调用时调接口,就是所谓工厂模式还是简单工厂吧。到时有新的算法就加个类实现接口,不知谁有更好的想法。
duhongsheng 2017-11-13
  • 打赏
  • 举报
回复
算法的变化也不会说天天变。一般来说半年或一年一变,有些是通用的,这也是我当年(09)以为能找出通用方法的原因,这些年每个项目的算法也就是4种,5个项目*4共二十种算法是硬在VB中加上去的,觉得很乱。
duhongsheng 2017-11-13
  • 打赏
  • 举报
回复
多谢前面各位的热心帮助。 其实这个项目是我原来用VB写的,因为一直是我维护,当时我也不懂这块,以为计算公式不会变,后来慢慢变化了,是不厌其烦啊地加B算法,C算法,实在是太乱了,自己都觉得,现在是甲方愿出点钱我改版。用c#重写 情况再介一下,试剂是几个月或1个月就会换一批,中间会有不同的厂家,这样算法就不一致。我初步的想法是用接口-工厂。写一些A/B/C......等算法,一种试剂对应于一种算法,试剂是存在数据库中的一条记录,在输入时,对应于算法。 算法只能是有变化就添加(改原代码)
正怒月神 2017-11-13
  • 打赏
  • 举报
回复
引用 9 楼 wanghui0380 的回复:
} [quote=引用 8 楼 starfd 的回复:] 策略模式
呵呵,你试试看,有200种病毒,800种试剂,2000种监测条件,你策略给我看看,别想当然。真当只管挖坑不管埋么?[/quote] 我觉得这个还是要看楼主说的 每个项目用不同的试剂的含义。 我觉得既然楼主说是小项目,那么不应该是混合试剂,所以不需要装饰模式。
mk_lucifer 2017-11-13
  • 打赏
  • 举报
回复
将算法和参数直接抽象出来,让客户编辑,你只做框架。。。 可以用数据库来解决: 厂商记录表,厂商试剂记录表,试剂记录表,项目记录表,项目测试方法记录表,总之数据多了数据库是最好的解决办法,这些记录存储相关参数。。 比如你要添加一个项目的一个新算法,则项测试方法记录表中添加一条记录,这条记录指示所属项目,所用试剂(精确到厂商),最后一条为算法脚本。。 客户想添加测试,只用添加项目测试方法记录即可(没有厂商,没有试剂记录,没有项目,自己添加),你可以通过这个记录明确体现出,这一测试需要用到的所有试剂和试剂相关测试系数,然后让客户填写,填写完成后,调用算法脚本得出结果。。。 不用数据库,也可以靠增加配置文件的方式来解决,毕竟卖出去的产品经常被客户要求改代码是不靠谱的,不如把要改的东西抽象出来,你只要把编辑器做的漂亮些,好错做写即可,至于算法脚本编辑器,我曾经我做过一个最简单的算法编辑器,Excel都用过把,按那个格式,谁都会用, A1网格里填 试剂1,A2里填试剂2,A3里填5, A4里填 =A1XA2+A3 或者 =CosA1*A2+A3等等,A5=A4*A2 结果输出到A6 填写 结果参数1=A5 结果参数2=A4 只要上过高中的不用学编程也会。。。你不可能人家改个公式加个新项目,你就改一次代码,那的累死。。。
wanghui0380 2017-11-13
  • 打赏
  • 举报
回复
其实整个这块不是对象化的,整个东西基于数据流 他相当于各种检测项+模式匹配 试剂不是楼上那种配合公式,试剂无关公式,试剂只是检测项。 病毒倒是跟公式挂,只是其实也不是公式,他更类似风险评测或者模式匹配。 你分析一下流程: 我怀疑你感冒了,我去专家库匹配一下感冒了应该使用那种手段去检查,然后把检查结果汇总去专家库匹配一下是否“大概率”有这个病 所以,不是说“梅毒”一个策略,这个不能用策略,如果你用策略意味着你需要一辈子去维护他,这里不该是策略,这里只需要一个消息通知一下专家库,看有多少个“指标检测"响应他,比如感冒的响应过程=量体温+验血==评测“体温+验血”结果,看是否匹配。
wanghui0380 2017-11-13
  • 打赏
  • 举报
回复
}
引用 8 楼 starfd 的回复:
策略模式
呵呵,你试试看,有200种病毒,800种试剂,2000种监测条件,你策略给我看看,别想当然。真当只管挖坑不管埋么?
  • 打赏
  • 举报
回复
策略模式
wanghui0380 2017-11-13
  • 打赏
  • 举报
回复
所以你就别想啥设计模式,模式是有,他会有试剂抽象,公式抽象 但不会选择其他模式,这个设计基于数据流,而非基于对象。 所以设计模式其实(特指GOF)其实没啥用,因为GOF基于对象,不基于消息和数据流
wanghui0380 2017-11-13
  • 打赏
  • 举报
回复
以现有的设计来说,这种项目其实是“反模式”的,目前主流设计是 我发出一个“梅毒检查”消息,然后有一个试剂A+试剂B响应,然后有试剂A结果响应,有试剂B结果响应,有试剂A+试剂B结果响应,有后面的回归,聚类预测 设计模式是特定时期,特定环境的产物,需要区别对待,别看哪都是钉子
wanghui0380 2017-11-13
  • 打赏
  • 举报
回复
公式抽象,试剂抽象 装饰模式 ps:其实有前面两个就好了,至于装饰其实没必要,就设计来说,你不会每次更改就代码“装饰”一遍,如果是这样这项目也没的玩了,这种东西用配置在不更改代码的情况下能搞定,不必什么这模式,那模式

13,190

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧