用例将变量定义为“protected”?

时间:2012-09-13 17:53:21

标签: oop

我理解当人们想要在扩展当前类的所有类中使变量可见时,应该使用protected,但这究竟意味着什么?最常见的用例是什么?

我认为构建问题的另一种方法是,当您希望从类的子类而不是外部类中看到类变量时,有哪些关键案例。

2 个答案:

答案 0 :(得分:2)

我遇到的“受保护”访问修饰符的大部分用例都是'Template Method' pattern的实例化。

在此模式中,算法的细节被委托给子类。

实际上,受保护的访问会在类不变量中创建一个漏洞:子类可能会滥用该成员,使得不变量不再存在。

大多数情况下,有更好的设计选择,而不是受保护的访问,dependency inversion是第一个想到的。

我的建议?不要将对象的内部发布给任何您不信任的人。谨慎使用'protected'!

答案 1 :(得分:1)

受保护的变量有助于有效地访问基类的变量,而无需通过get / set约束。

受保护变量的有用性在开发应该在其他应用程序中使用的库中具有重要意义。它可以帮助您在lib环境中自由使用变量而不将它们公开,当您最终确定继承的类时,它们将被禁止进入外部环境。