|
1
6
听起来你已经超越了将物体定义为“狗”的阶段 is-a 动物”并从以下方面进入对象定义 角色、职责和行为 . 我会推荐这本书来帮助你实现这种转变,真的” 明白 ": Object Design: Roles, Responsibilities, and Collaboration 我无法回答你的具体问题,因为这是一个非常基本的设计决策,你真的应该了解“大局”。这本书将为你提供责任驱动设计的原则和技术的良好基础。 |
|
|
2
3
马丁·福勒有一些有用的 views on this .
|
|
|
3
3
我不知道这是否非常“面向对象”,但对我来说,这感觉非常MVC和关注点分离。拥有非常轻量级的业务类(到目前为止,它们只是数据容器),然后是移动它们的存储库对象,这是一种常见的模式。 |
|
|
4
1
你可以继续重构User类中的所有功能,但正如你所说,你最终可能会一无所获。此时,你可以选择评估你创建的所有其他类,然后对每个类做出单独的判断,根据具体情况决定这些类是否包含足够的功能来保证一个全新的类。 如果您认为其中一些类太小,则可以将它们的功能放回User类中。例如,我认为在User上使用Validate函数没有什么错,而不是使用只有一个方法的UserValidation类。 |
|
|
5
1
当你说这些方法可能不属于用户对象时,我认为你是在花钱。获取/搜索/保存方法可能存在争议,但我认为它们不应该出现在业务对象本身上,而应该使用存储库(存储库模式)或通过 Query Objects 如果您不希望将ORM抽象到存储库中。 就身份验证而言,最好有一组负责身份验证的类,并将其完全从用户对象中删除。这组类可以知道用户对象,或者更好的是,它们应该知道诸如凭据之类的契约。 |
|
6
0
您所描述的情况与对象是否遵循自助服务或适配器模式保存到存储库(即数据库)有关。
自助服务将使对象保存“自己”,如
Adapter表单通常很受欢迎,因为它从对象中删除了任何存储库功能。 |
|
|
7
0
我喜欢用另一种方式来表达。这些方法并不真正属于该领域,因为不涉及业务逻辑。我想使用命令和查询隔离原则 GetByUsername()——这是一个真正不需要任何业务逻辑的查询 Authenticate()、VerifyLoginPassword()——这些是不应该在域中完成的验证逻辑。请参阅此文件 Set Based validation in Domain |
|
|
simply lemon · python上链表的添加方法 2 年前 |
|
|
Anonymous · 为什么在这个例子中self和类名的用法不同? 2 年前 |
|
|
P N Singh · 在CPP Oops中调用对象而不创建它 2 年前 |
|
|
Muthuraj · 如何创建一个通用工厂来创建某种类型的实例[重复] 2 年前 |
|
|
Andy Votava · 从父类定义调用学生方法 2 年前 |