在工作中遇到的一个设计问题

关于一个设计的问题.
最近在做一个系统,与邮箱系统有点类似,但又不全是,大概需求是:

一个用户提出一份报告,然后将这份报告发给他的上级<不同位置的用户上级不同>查看处理,不管上级怎么处理,都必须有个回复,同时只要涉足过这份报告的用户都可以查看这份报告的情况,这份报告在不同的时间内会有不同的状态,
大概就是这样

根据这些需求,我们首先提出以下结构:
报告,BOX<在编,草稿,发件,收件,待处理(事情没完),已处理(完了)>



class Report{
//用来标志这个报告在那个BOX内
int box;
}

/*******
* service,从某种意义上来说,算是一个转发的功能,但不全是,因为它们还有一个更重要的职责,封装步骤
******/

//发送管理
class senderService{
//包括新增,发送 等,发送及发送前对报告的操作,如:

//这样写有点奇怪,但是将USER当成一个所有者就好理解了,即,这个报告是他的
public void send(Report report, User user){
inbox.putin(report, user);
}
}

//处理管理
class operatorService{
//包括发送后对报告的所有操作
}

/**************************
* 以下都为Manager非service,由于上面对具体步骤进行了管理,这里对每个BOX的操作就很单一了,且相差不大
*************************/

interface Box{
public List<Report> list();
}
//
interface Sender{
//放入,report报告,owner所有者(我觉得这个概念很重要)即目的地
public void putin(Report report, User owner);
}

interface Operator{
//回复
public void putin(Report report, String writeBack)
}

//在编,处理没有发送前的报告
class Editbox implements Box,Sender{
}
//收件,处理收的
class Inbox implements Box,Sender{}

//待处理,所有处理后不能在现实实现的报告
class Staybox implements Box, Operator{}

//完成
class Endbox implements Box, Operator{}

//DAO,所有BOX对报告的修改都调用这个
class ReportDao{}





在每个BOX中我刚说了一个很重要的概念,所有者,即当前放入BOX的报告是那个的,
这样的话对所有BOX我只要对它说,我是那个,你把我的东西保存起来或把我的东西拿出来.
而在BOX内是直接修改Report的BOX属性,以给定它的所属.(我在这里没有将BOX属性,当成状态!!!而是看成它属于那个BOX)
以及其它信息的处理(现在不多),然后调用DAO持久化

以上是我的主要思想,其实,以前,我是把Sender,Operator接口继承BOX的,同事坚决反对后去了...


然后,我的同事却不想这样做,主要原因是,他觉得BOX太多了.而且每个BOX内的东西相对都很少,最重要的一点是每个BOX内都是改Request.box属性,他想直接在senderService,operatorService里面改这个属性...这样至少要少5个类,5个接口(Spring的原因).所以他觉得我那样做太臃肿了


我之所以搞出那样的处理方式,是想真正的将系统当成对象(希望能做成一个领域模型)一样的去处理,而不是为了实现功能而实现.

首先,希望大家能对我这样的处理方式进行批判,其次,也帮忙分析一下我与同事的分歧
在此先谢谢各位了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值