对于一个工程师,如果想要更高更往上的职位,那么我们不仅要能够独立的完成。我们还可以需要可以独立的去实现某一个系统。从需求的确定到代码的设计和实现,到后期的上线及维护。

本期我们就一个积分兑换系统的设计。来展示如何去设计一套系统,并且完成开发,看一下在这其中都蕴含了哪些设计思想,设计模式。

互联网商城中,积分兑换是一个非常常见的营销手段。那么。在搭建好了。订单系统,销售系统等其他系统的情况下,需要我们去独立负责积分系统的开发

在没有设计文档,线框图的情况下,我们将如何进行设计了?首先,如果我们一个人去苦思冥想如何设计这个系统,那么将会变得非常困难,而且设计出来的与实际使用也不尽相同。借鉴现有的成熟的积分系统是我们非常好的一个选择。比如现有的例如京东淘宝,他们都有一套成熟的可以直接拿过来用的积分规则,比如在京东有京豆系统,他可以每日签到做任务,然后评论,下订单来获取京豆,同样也可以在我们购买商品的时候去消费京豆抵订单金额,甚至可以拿京豆去换取商品,换取优惠券。

那么有了这样的一个大框架之后,我们就需要去实际思考一些针对我们本系统的业务细节。我们可以通过产品的线框图,用户用例 来细化业务流程。

用户用例可以理解为模拟用户如何去使用我们的产品。模拟用户进行一套完整的业务操作。比如在用户获取积分时候会告知积分有效期,在使用积分的时候会优先使用快过期的积分,再查询积分明细的时候会显示出积分的明细包括过期时间,查看可用积分的时候会排除掉过期的积分。

在明确了一些业务细节之后,我们要去考虑在系统层面上如何去实现这样的设计,这样的一个系统,一般都是先有逻辑,再考虑如何去设计系统,然后再真正的去实现它。

我们之前面向对象设计的时候就是将不同的功能归为不同的类,那么同样类比,做系统设计的时候也是将不同的功能分到了不同的模块中。在模块层面进行划分详细,清晰 做到高内聚低耦合。

那么具体的模块划分,我们有以下三种实现。

1.在积分模块中只是负责增加积分,减少积分,查询积分明细和查询可用积分这几个功能。将具体如何去实现放到更上层的营销系统中,例如积分赚取的渠道和规则。赚取规则的增加和管理。

2.将积分赚取的规则放到不同的模块当中,比如说下订单就放进订单模块。然后,其实评论就放到评论模块。同样在积分模块中只负责积分的增加,减少,查询明细。

3.将积分赚取规则以及消费规则全都放在我们的积分系统当中。然后在下订单之后就将订单的信息传给我们的积分系统,我们积分系统通过对应的接口拿到之后。进行增加或者减少

如果判断哪一种实现更好?那么我们可以通过面向对象的思想,看哪一种实现更可能做到高内聚低耦合.

一般来说,为了避免业务的耦合,然后下层系统更加通用,我们一般不希望下层系统包含太多上层系统的业务逻辑和信息,但是可以接受上层系统包含下层系统的业务信息。比如订单系统,优惠券系统,换购商城。而下层系统,比如我们的积分模块就只负责积分的增加,减少,不负责真正的业务实现,于是乎,我们更加倾向于第一种或者第二种实现。

而且在系统之间的调用,常见的有,同步调用和异步调用,比如订单模块在用户下订单之后,推送一条消息到中间件。然后其他模块从中间件当中拿取订单消息,其他模块不需要知道订单模块的实现细节,订单模块不需要知道其他模块的实现细节,做到模块间的解耦

本章重点

一个想要往上走的程序员需要有一些产品思维。但是在设计产品的时候,我们尽量做到不要自己从头从零设计,要学会借鉴。可以通过线框图和用户实例去细化业务流程,然后在设计模块的思路当中融入面向对象思想。尽量做到模块和模块之间的高内聚,低耦合.代码整体一目了然。然后并且采用合适的交互方式。

发表评论

邮箱地址不会被公开。 必填项已用*标注