5
看來,如果我嚴格遵守單一責任原則,那麼我可能需要添加公共getter以拆分可能會改變的功能。對我來說,這似乎通過暴露物體內部結構來破壞封裝。嚴格遵守單一責任原則是否違反封裝?
例如,假設我有一個代表上傳文件的類。在過去,我已經使用像toHtml()方法,以避免getter和維護封裝:
public class UploadedFile() {
private String filename;
private String uri;
public String toHtml() {
return <html string>;
}
但我可以看到人們可以爭辯說,根據SRP,你可能要包括文件名的getter和uri並在別處生成html。