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