gpt4 book ai didi

oop - 严格遵守单一职责原则是否违反封装?

转载 作者:行者123 更新时间:2023-12-04 21:50:15 28 4
gpt4 key购买 nike

看来,如果我严格遵守单一职责原则,那么我可能必须添加公共(public) getter 以拆分可能会更改的功能。对我来说,这似乎违反了封装,因为它暴露了对象的内部结构。

例如,假设我有一个代表上传文件的类。在过去,我使用过类似 toHtml() 的方法来避免 getter 并保持封装:

public class UploadedFile() {
private String filename;
private String uri;
public String toHtml() {
return <html string>;
}

但是我可以看到有人会争辩说,基于 SRP,您可能希望包含文件名和 uri 的 getter 并在其他地方生成 html。

最佳答案

在这种情况下,filenameuri将是您的 UploadedFile() 的属性类,保持隐藏是不合逻辑的,因此在我看来,为这些提供 setter/getter 根本不会违反封装。

如果您制作了 filename,则会发生封装违规。和 uri公共(public)字段并直接访问它们。

关于oop - 严格遵守单一职责原则是否违反封装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6286275/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com