问题标签 [system-design]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
oop - 系统设计 - 为汽车创建类结构 - 面向对象
所以我最近遇到了一个关于系统设计的问题。根据下面给定的设计,我们有 3 辆汽车,其中 2 辆可以自动驾驶,其中 2 辆可以自动发射
所以问题是——你将如何设计类结构。还提供一个示例方法,例如 Launch for Suv 并提供单元测试
所以 - 为了回答这个问题,我想出了如下所述的东西:
所以在最后,假设我们想要启动 Suv,那么在这种情况下,我们可以执行类似 LaunchSuv.Launch(); 的操作。
- 我不确定我的解决方案是否朝着正确的方向发展。如果是的话,有没有改进的余地?
仅供参考 - 我决定为 AutoPilot 和 AutoLaunch 设置单独的界面的原因是因为总有 3 辆汽车中的一辆汽车没有这两种功能要求。如果我在基础车中声明这两种方法,那么所有汽车都将具有我不想要的两种方法 - 不确定这个原因是好的设计还是不那么重要!另外我刚刚以 SUV 为例,可以为 Sedan 和 Coupe 派生类似的类结构
system - 需求收集(系统分析与设计)
需求收集
a) 对于项目的初始状态,确定您将用于该系统的一种信息收集方法(调查或需求收集)。讨论选择的好处和挫折方法。建议您在群组成员之间使用不同的方法。
b) 解释调查方法的实施,包括如何进行、目标用户、位置等。创建一组可用于调查的问题。显示仅与系统开发项目相关的问题。
系统:快速数学中心
信息收集方法:直接和间接观察
我完全不知道如何开始,在文档中写什么,以及格式是什么。
ios - 如何在 Swift 中正确使用类扩展?
在 Swift 中,我历来使用扩展来扩展封闭类型并提供方便的、无逻辑的功能,例如动画、数学扩展等。但是,由于扩展是遍布代码库的硬依赖,我总是在实施之前三思而后行作为扩展的东西。
不过,最近我看到 Apple 建议在更大范围内使用扩展,例如将协议实现为单独的扩展。
也就是说,如果你有一个实现协议 B 的类 A,你最终会得到这样的设计:
当你进入那个兔子洞时,我开始看到更多基于扩展的代码,比如:
我的一部分喜欢在单独的扩展中实现协议时获得的构建块。它使班级的各个部分真正不同。然而,一旦你继承了这个类,你将不得不改变这个设计,因为扩展函数不能被覆盖。
我认为第二种方法是......有趣。它的好处是您不必注释每个私有属性并将其用作私有,因为您可以为扩展指定它。
然而,这种设计也将存储和非存储属性、公共和私有函数分开,使得类的“逻辑”更难遵循(我知道写更小的类)。这与子类化问题一起,让我在扩展仙境的门廊上停了下来。
很想听听世界上的 Swift 社区如何看待扩展。你怎么看?有银弹吗?
system-design - 功能分解图和数据流图
FDD和同一个系统的DFD是什么关系?
java - 在 Angular(前端)+ Java(后端)中具有服务器控制 UI 显示的设计系统
我正在通过使用 Angular 作为前端和 Java(Spring-Boot) 作为后端来构建一个单页 Web 系统。该系统具有不同的角色,用户必须分配给一个角色。不同的角色可以做不同的操作。
假设保持简单:系统中有两个角色:超级用户和管理员。此系统中唯一的功能是 Product,它具有 3 个属性:名称、retail_price、factory_price。超级用户可以添加产品并更新这些属性。管理员可以查看名称和retail_price 但管理员无法查看 factory_price。管理员也可以更新retail_price 但无法添加产品。
为了在 Angular 中实现这个功能控制,我现在正在用 HTML 对代码进行硬编码。显示产品页面时,如果登录用户属于超级用户,将显示添加按钮。显示产品详细信息页面时,如果登录用户属于管理员,则 factory_price 将被隐藏,名称字段将为只读。
显然,这不是一个好方法,因为所有这些控制代码都是 HTML 格式的,每个人都可以阅读并了解我们的逻辑。我正在寻找一些可以在服务器端处理这个逻辑的解决方案和指导,服务器只返回浏览器需要显示的任何内容,前端(Angular)只显示来自服务器的内容并摆脱所有这些控制逻辑,如上所述。
另一个挑战是如何为不同的角色处理不同的 HTML。例如对于产品详细信息页面,我想为服务器端的不同角色准备 HTML 内容,一旦登录用户进入产品详细信息页面,Angular 只需发送一个 Restful 调用并从后端获取 HTML 内容并显示它。然后客户端不需要任何逻辑,只需显示即可。我应该为不同的角色使用不同的 HTML 模板吗?
in-app-purchase - 在 App Purchase 后端架构中:用户帐户和保护应用程序免受“借用帐户”下载
我是一名前端开发人员,我即将开始编写我的第一个后端(使用 AWS,希望它不会是一场灾难)。我需要一些指导,可以是指向 SO 或教程或其他适当主题的链接 - 我已经搜索了很长时间,但我可能不知道如何搜索我需要解决的问题。
保持简单:我的客户卖书。为了补充这些书籍,我们目前正在开发一个应用程序。该应用程序的不同部分将对应不同的书籍,尽管该应用程序本身也有其价值(即您不必拥有一本书即可使用该应用程序)。这个想法是,如果用户拥有一本书,他将被允许从 AppStore 免费下载应用程序的相应部分。如果他不这样做,他必须使用 IAP 购买此内容以支付一定的金额。
我想出了以下简单的解决方案:
- 我们正在维护一个包含所有已售图书 ID 的数据库
- 我们允许用户注册并输入他们拥有的书籍的 ID
- 我们根据我们的数据库检查这些 id,并检查是否没有其他用户之前输入过这些 id
- 如果 id(s) 是 OK,我们允许用户下载与拥有的书相对应的内容。
如果他在这些设备上登录到他的帐户,则用户能够从多个设备(例如他的 iPad、他的 iPhone、他孩子的 iPhone...)下载内容。
但是,我想防止用户将他的帐户提供给朋友,然后他在他的设备上登录该帐户并下载内容,然后退出并使用该应用程序,即使他没有购买任何东西并且他不拥有这些书。
我的想法:
用户必须登录以验证他有权使用该内容,即使该内容已经在他的手机上(之前下载过)。用户只能同时登录到一个设备(登录到另一个设备后,他将从第一个设备注销)。严重缺点:用户只能在连接到 Internet 时使用该应用程序,即使他可能已经下载了所有内容。
通过执行应用内购买或购买书籍,用户有权获得例如 3 次下载。严重的缺点:如果用户删除了应用程序并想要重新安装它怎么办?重新下载购买的部件将计为一次下载,因为没有可靠的方法来检查设备是否与以前相同,至少对于 iOS 而言不是 - 有一个称为 vendorId 的东西,但事实证明它不可靠 - 例如更改系统更新。
以尽可能低的价格(而不是免费)为书主提供相同的内容,并以正常价格为其他人提供相同的内容。通过这种方式,我会将所有检查委托给 Apple(通过用户的 iCloud 帐户),因为解锁内容始终需要使用 IAP,并且一旦购买,Apple 将跟踪所有内容。
其他方法吗?请帮忙。
还有一件事需要考虑 - 我们希望有可能制作“课堂帐户” - 多个设备可以登录到同一个帐户并下载内容。客户端将决定允许多少设备并将此下载数量放入数据库。
sql - 预约系统的系统设计
我正在开发一个病人预约系统,下面是我提出的模式。您能否验证并让我知道实体及其关系是否正确。我正在研究一个基本系统,当用户登录时,他或她可以为医生和病人预约。他应该能够在预订时看到医生名单和他们的可用时间段。
约会类型 ID 名称
从业者
从业者类型
sql - 实体关系代码优先方法
我正在构建患者预约预约系统并使用实体框架的代码优先方法。我设计了模型及其关系。有人可以告诉我是否有任何不正确的地方吗?
我假设以下是关系。如果我错了请纠正我
一位患者可以有多个预约,而一个预约只能属于一位患者。因此,患者与约会具有一对多的关系。
一位从业者可以有多个约会,而一个约会只能属于一位从业者。因此,Practioner 与约会具有一对多的关系。
一个 Practioner 可以有多个 PractionerTypes(例如 Doctor、Nurse),而一个 PractionerType 只能属于一个 Practioner。因此 Practioner 与 PractionerTypes 有一对多的关系。
一个 Appointment 可以有多个 AppointmentTypes(例如 Standard、Special),一个 AppointmentTypes 只能属于一个 Appointment 。因此 Appointment 与 AppointmentTypes 有一对多的关系。
一个 Practitioner 可以有多个 PractitionerAvailableHours,一个 PractitionerAvailableHours 只能属于一个 Practioner
看到这篇文章后我有点困惑http://www.entityframeworktutorial.net/code-first/configure-one-to-many-relationship-in-code-first.aspx
根据这篇文章,当你在做一对多关系时,你需要在一个类中定义多个类的属性,并在多个类中拥有一个类的集合属性。在他们的例子中。学生是一类,标准是多类。学生有标准类的虚拟属性方法,标准类有学生类的虚拟集合属性在我的设计中,正好相反。假设 Patient 和 Appointments 有一对多的关系
考虑到上述情况,实体设计如下所示
预约
约会类型
病人
从业者
从业者类型
从业者可用时间
software-design - 软件设计文档和系统设计文档的区别
我正在为 Web 应用程序的模块编写设计文档,在研究设计文档时,我遇到了名称为软件设计文档 (SDD)/软件设计描述 (SDD)、系统设计文档 ( SDD)和技术设计文档 (TDD)。这些文件有什么区别?
就我而言,我需要设计整个模块及其功能,并为其编写设计文档,以便稍后由部门用于其他设计。我正在遵循软件设计文档/软件设计描述 - 部分原因是它位于 IEEE 软件生命周期中,并且可能是其他软件团队在软件设计中使用的基础。谁能解释一下设计文件并建议我的工作最好遵循哪一个?