绿叶水果商城系统开发代码技术

Posted kxt599

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了绿叶水果商城系统开发代码技术相关的知识,希望对你有一定的参考价值。

  绿叶水果商城系统开发 婷经理 【联系电话:184-7578-0020】 绿叶水果商城软件开发 绿叶水果商城平台开发 至少30年以前,一些软件设计人员就已经意识到领域建模和设计的重要性,并形成一种思潮,Eric Evans将其定义为领域驱动设计(Domain-Driven Design,简称DDD)。在互联网开发“小步快跑,迭代试错”的大环境下,DDD似乎是一种比较“古老而缓慢”的思想。然而,由于互联网公司也逐渐深入实体经济,业务日益复杂,我们在开发中也越来越多地遇到传统行业软件开发中所面临的问题。本文就先来讲一下这些问题,然后再尝试在实践中用DDD的思想来解决这些问题。

  在我们习惯了J2EE的开发模式后,Action/Service/DAO这种分层模式,会很自然地写出过程式代码,而学到的很多关于OO理论的也毫无用武之地。使用这种开发方式,对象只是数据的载体,没有行为。以数据为中心,以数据库ER设计作驱动。分层架构在这种开发模式下,可以理解为是对数据移动、处理和实现的过程。

  以笔者最近开发的系统抽奖平台为例:

  场景需求

  奖池里配置了很多奖项,我们需要按运营预先配置的概率抽中一个奖项。

  实现非常简单,生成一个随机数,匹配符合该随机数生成概率的奖项即可。

  贫血模型实现方案

  先设计奖池和奖项的库表配置。

  

技术分享图片

 

  设计AwardPool和Award两个对象,只有简单的get和set属性的方法

  class AwardPool {

  int awardPoolId;

  List awards;

  public List getAwards() {

  return awards;

  }

  public void setAwards(List awards) {

  this.awards = awards;

  }

  ......

  }

  class Award {

  int awardId;

  int probability;//概率

  ......

  }

  Service代码实现

  设计一个LotteryService,在其中的drawLottery()方法写服务逻辑

  AwardPool awardPool = awardPoolDao.getAwardPool(poolId);//sql查询,将数据映射到AwardPool对象

  for (Award award : awardPool.getAwards()) {

  //寻找到符合award.getProbability()概率的award

  }

  按照我们通常思路实现,可以发现:在业务领域里非常重要的抽奖,我的业务逻辑都是写在Service中的,Award充其量只是个数据载体,没有任何行为。简单的业务系统采用这种贫血模型和过程化设计是没有问题的,但在业务逻辑复杂了,业务逻辑、状态会散落到在大量方法中,原本的代码意图会渐渐不明确,我们将这种情况称为由贫血症引起的失忆症。

  更好的是采用领域模型的开发方式,将数据和行为封装在一起,并与现实世界中的业务对象相映射。各类具备明确的职责划分,将领域逻辑分散到领域对象中。继续举我们上述抽奖的例子,使用概率选择对应的奖品就应当放到AwardPool类中。

  绿叶水果商城系统开发 婷经理 【联系电话:184-7578-0020】 绿叶水果商城软件开发 绿叶水果商城平台开发

以上是关于绿叶水果商城系统开发代码技术的主要内容,如果未能解决你的问题,请参考以下文章

基于SSM实现水果蔬菜商城管理系统

基于jsp+mysql的JSP在线水果销售商城系统设计实现

基于jsp+mysql的JSP在线水果销售商城系统设计实现

热榜!基于jsp+mysql的JSP在线水果销售商城系统设计实现建议收藏

热榜!基于jsp+mysql的JSP在线水果销售商城系统设计实现建议收藏

Java精品项目源码前后端分离系统第25期水果生鲜商城系统