2011-06-08 54 views
5

看來,如果我嚴格遵守單一責任原則,那麼我可能需要添加公共getter以拆分可能會改變的功能。對我來說,這似乎通過暴露物體內部結構來破壞封裝。嚴格遵守單一責任原則是否違反封裝?

例如,假設我有一個代表上傳文件的類。在過去,我已經使用像toHtml()方法,以避免getter和維護封裝:

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

但我可以看到人們可以爭辯說,根據SRP,你可能要包括文件名的getter和uri並在別處生成html。

回答

1

在這種情況下,filenameuri將是您的UploadedFile()類的屬性,隱藏起來不合邏輯,所以在我看來,爲那些提供getter的人根本不違反封裝。

如果您製作了filenameuri公共字段並直接訪問它們,則會發生封裝違規。