Jon*_*yMC 3 c# oop encapsulation
良好的面向对象设计表明对象不应暴露其内部.鉴于这种情况,显示数据的最佳方式是什么?
例如,在控制台应用程序中调用DoSomethingToData后,如何显示数据字段?
public class Foo {
string data;
public void DoSomethingToData(string someParam) {
.....
}
}
class Program {
static void Main(string[] items) {
var foo = new Foo();
foo.DoSomethingToData("blah");
..... // how do we write data field to console without breaking encapsulation?
}
}
Run Code Online (Sandbox Code Playgroud)
更新: 我认为维护封装的最佳方法是使用观察者模式(事件),但没有人提到它.这是一个比暴露属性或方法结果更好的解决方案吗?
这取决于;
我怀疑是后者,所以:
public string Data { get { return data; } }
Run Code Online (Sandbox Code Playgroud)
这只是一个访问器 - 例如,相当于getData()
java.这不是暴露字段,但最终您的对象应该向信息公开一些 API.这并不是一个完整的秘密.