英文:
Why Class Diagram methods are defined in the same class?
问题
在类图表示中,字段和与类相关的方法会显示在图表上。然而,当将图表转换为类时,我看到这些方法会显示为接口方法,如下所示:
public class Account {
private String userName;
private String password;
private String name;
private String email;
private String phone;
private List<CreditCard> creditCards;
public boolean addProduct(Product product);
public boolean addProductReview(ProductReview review);
public boolean resetPassword();
}
这通常是正常使用的类实现吗?还是说这只是一个较高级别的实现?因为通常情况下,我会在该类的服务(AccountService
)中实现addProduct(Product product)
和其他方法。这样做会有问题吗?
英文:
In class diagram representation, the fields and the class related methods are shown on the diagram. However, when converting the diagram to a class, I see that these methods are shown like an interface method as shown:
public class Account {
private String userName;
private String password;
private String name;
private String email;
private String phone;
private List<CreditCard> creditCards;
public boolean addProduct(Product product);
public boolean addProductReview(ProductReview review);
public boolean resetPassword();
}
Is it the class implementation that is normally used? Or just an higher level implementation? Because normally, I would implement addProduct(Product product)
and the other methods in the service of this class (AccountService
). Is it wrong?
答案1
得分: 0
UML是设计无关的。如果你定义一个类如下:
它会被理解成你所展示的代码,而任何良好的代码生成器都会生成你所拥有的代码。
如果你想将领域类Account
仅包含数据,并将领域逻辑分离到一个AccountService
类中,这是你的权利,但你需要在UML中建模两个不同的类。这种设计方法被称为贫血领域模型,不管你是否喜欢,它被认为是一种反模式。
英文:
UML is design agnostic. If you define a class like:
It is understood like the code you've shown, and any decent code generator would generate the code you have.
If you want to keep your domain class Account
with only data and separate the domain logic into an AccountService
class, it is your right, but you'll have to model two distinct classes in UML. This design approach is by the way called the anemic domain model (see also here), and, like it or not, it is considered as an anti-pattern.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论