首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >一种简单餐厅客户-服务器体系结构(UML图)的改进设计

一种简单餐厅客户-服务器体系结构(UML图)的改进设计
EN

Software Engineering用户
提问于 2016-02-18 10:45:50
回答 2查看 5.3K关注 0票数 2

我必须设计一个简单的服务器-客户端模型,为一些虚拟餐厅的计费系统。

在UML图上花费了大约10-15个小时之后,我还没有走那么远。我面临的主要问题是客户端的OO设计。

目前的两个想法是:

设计--

在这个设计中,我基本上是将所有与处理菜单、桌子和任何其他与餐厅相关的对象的东西填充到一个单独的类(客户端)中。尽管如此,它提出了一个可伸缩性问题,也违背了OO设计的单一责任原则。

但是,它极大地简化了客户机类与它需要处理的事物(例如菜单)之间的通信,因为它们是客户机类的一部分。

设计B

在此设计中,任务更多地分布在客户端。例如,客户端类将通过实例化对象而不是直接处理餐馆对象(即菜单和表)。

此外,要使菜单/表类访问数据库类,它们必须通过客户端类,这意味着客户端和菜单/表类之间必须有一些通信。为此目的,存在抽象请求类。它本质上将东西存储在一个队列中,然后客户机类就可以在拾取时将其存储起来。

但是现在的设计已经很复杂了,特别是请求所采用的路径;一个请求将在Client类中被引发,然后被传递到一个实例化的菜单/Table对象中,然后它将被客户机类(Client -> Menu/Table -> Client)捕获。

所以在一天的最后,我应该选择哪种设计,以及如何改进它们呢?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2016-03-02 08:06:19

设计C

到头来,Design是我最后使用的:

  • 与Design相比,它消除了客户端和它使用的对象之间对请求类的多余需求。
  • 到目前为止,它比设计A的OO要多得多。
票数 0
EN

Software Engineering用户

发布于 2016-03-02 08:37:22

我想你错过了餐厅班和预订班。

  • 一家餐馆有固定大小的桌子集合。
  • 预订将客户端链接到表上一段时间(在您的示例中这只是一个日期)。

从现实世界的角度想一想--你可以联系一家餐厅,为某一特定日期预订房间。你可以打电话取消预订。对现实世界建模将大大简化您的编码。

使用您的设计C,您有一个方法client.findEmptyTable()。这是奇怪的--当然,它应该是类似于restaurant.findEmptyTable(日期)的东西。

此外,这个问题可能更适合于“代码审查”论坛。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/310420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档