似乎如果我严格遵守单一责任原则,那么我可能必须添加公共getter以分割可能发生变化的功能.对我来说,这似乎违反了通过暴露对象内部结构的封装. 例如,假设我有一个表示上传文件的类
例如,假设我有一个表示上传文件的类.在过去,我使用像toHtml()这样的方法来避免getter并保持封装:
public class UploadedFile() { private String filename; private String uri; public String toHtml() { return <html string>; }
但我可以看到有人认为,基于SRP,您可能希望包含文件名和uri的getter,并在其他地方生成html.
在这种情况下,filename和uri将是你的UploadedFile()类的属性,保持隐藏是不合逻辑的,所以在我看来,为那些提供getter并不违反封装.如果您创建了文件名和uri公共字段并且只是直接访问它们,则会发生封装违规.