小编Mad*_*apu的帖子

开放/封闭原则和违反封装

您能否检查以下代码是否正确?事实是,我在推进代码中找到了类似的东西,我怀疑它是否与开放/封闭原则相匹配.

public abstract class CustomClass {

    private ClassThatSetEnvironmentProperty sysProp = new ClassThatSetEnvironmentProperty("SYS_PROPETY", "SYS_PROPERTY_VALUE");

    // some code here

    void setSysProp(ClassThatSetEnvironmentProperty sysProp) {
        this.sysProp = sysProp;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的理解是setter仅为单元测试可能性定义(模拟ClassThatSetEnvironmentProperty).但在这种情况下,setter允许具体的继承者改变定义的状态.从我的角度来看,它违反了封装.更多我认为它也违反了开放/封闭的原则.坦率地说,我的一些同事采取了相反的观点.我真的没有多少经验,所以我很难认识到它.请在这里分享您的意见.谢谢.

java open-closed-principle

0
推荐指数
1
解决办法
194
查看次数

标签 统计

java ×1

open-closed-principle ×1