design-patterns - 用户登录的 UML 类图

标签 design-patterns oop class-design uml

下图是我第一次尝试创建描述用户登录到网站的 UML 类图。

rubbishlogindesign

我敢肯定它的设计很糟糕而且充满缺陷,但我希望向你们学习如何设计这样一个简单的登录。我对您对设计模式的使用以及您将使用哪些模式、您将如何在设计中实现它以及为什么使用它特别感兴趣。

任何建议、批评、意见和建议将不胜感激。提前致谢。

最佳答案

以下是我们如何实现此功能

Class Diagram

如您所见,我们有许多应用程序(在这里,它的行为就像您的网站)。

版主、站长和成员(member),如你的映射所示,作为一个角色会更好。是否需要添加新的“角色”会发生什么情况。也许你必须改变你所有的模型。

每个 UserApplication (UserWebsite) 都有其开始和结束日期。每个应用程序都有自己的角色。银行网站需要经理角色。健康保险公司网站需要代理角色等等......

更新

我了解登录/用户(部分/整体)的组成关系。在继续之前,请参阅 answer关于组合与聚合。

But what I do not understand is the purpose of the UserApplication and Application classes



将应用程序视为您的网站。我在一家大型健康保险公司工作,我们有许多模块(每个模块(应用程序)都有自己的网站)。但是部分用户 ,不是所有的,都可以使用每个模块。它解释了我为什么定义 UserApplication。

role's role in this login process



没有任何。它只是给 UserApplication 一个角色。我可以使用财务模块,它定义了以下角色:经理、客户和其他,我可以在其中扮演经理的角色。但是我可以为您分配一个临时用户(startDate 和 endDate)作为客户来使用财务模块。
Application financialModule = new Application();

financialModule.addRole(new Role("Manager"));
financialModule.addRole(new Role("Customer"));
financialModule.addRole(new Role("Other"));

User arthur = new User(new Login("#####", "#####"));
arthur.setFirstName("Arthur");
arthur.setLastName("Ronald");
arthur.setEnabled(true);

UserApplication financialModuleUser = new UserApplication(new Period(new Date(), null));
financialModuleUser.setUser(arthur);
financialModuleUser.addRole(financialModule.getRoleByDescription("Manager"));

financialModule.addUserApplication(financialModuleUser);

您的网站看起来像
Website myWebsite = new Website();
myWebsite.addRole(new Role("Member"));
myWebsite.addRole(new Role("WebMaster"));
myWebsite.addRole(new Role("Moderator"));

User you = new User(new Login("#####", "#####"));
you.setFirstName("FirstName");
you.setLastName("LastName");
you.setEnabled(true);

UserApplication myWebsiteUser = new UserApplication(new Period(new Date(), null));
myWebsiteUser.setUser(you);
myWebsiteUser.addRole(myWebsite.getRoleByDescription("WebMaster"));

myWebsite.addUserApplication(myWebsiteUser);

如您所见,网站管理员、版主和成员(member) 只是角色由您的网站定义。没有其他的。

关于 UML 和 ORM 的一个很好的资源是 Java Persistence with Hibernate 一书。

关于design-patterns - 用户登录的 UML 类图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2443790/

相关文章:

asp.net - Javascript 文件依赖 - 选择性加载资源文件并防止重复

javascript - 如何避免 "this"引用DOM元素,引用对象

java - 类设计 - 手动类型转换替代方案

php - 最好的 PHP 编程方法?

C++ - 基类的面向对象数组

php - 如何将方法的默认参数设置为类成员

c++ - C++中的可复制数据类

node.js - 分离网络服务器和处理服务器

ios - 跳过 UINavigationController 堆栈中的 View Controller

c# - 从 2 个不同的 API 组合/转换 2 个相似的对象类型