所以我在这一点上编写了很长时间。我总是编写包含很多私有底层字段的包装类,这些字段可以通过帮助方法访问。这是传统的智慧,或者至少是我所教过的。
有时用户不应该能够在运行时轻松地与您的代码交互,但是......我的“假设”是:桌面的实用程序应用程序,只有您使用,才能公开底层类以便于扩展。与单人游戏等相同。
当你谈论处理泛型时,它是有道理的。如果你有通过接口/摘要实现的合同,那就有意义了。此外,这显然不适用于需要安全的程序。
对我来说,暴露底层类可能意味着代码明显减少,代码更容易“触及和触摸(通过反射,类加载器等)”,并且全面实现均匀性的显着提升。
尽管它们隐藏了类,但包装类可以是任何类,但类本身是相同的。具有相同底层架构和类的两段代码,它们做同样的事情,它们不应该有完全不同的代码吗?
那标准的重点不是吗?我的问题很简单......为什么?为什么隐藏底层类,并用一组方法包装它们来做简单的事情本身就是“好习惯”。
我最近遇到过很多带有“Manager”类的库(带有构造函数的实例字段的util类......可能不是正式术语。)其中很多都使得简单地检查值有些困难用于调试。一个例子是HashMap,它只能使用lib的方法访问,这些方法会混淆输出/输出的值。
所以说在hashmap上调用.get,或者遍历用于调试的entryset我必须使用反射。这是一种痛苦,用大量的尝试/捕获填充我的代码,并花费更多的时间。
我实际上必须创建一个代理和访问者,以便在它们在util方法结束时写入数据集之前获取某些值!所以,是的......给了什么?