java - Java2D 和 Swing 是 Good Use OOP 的例子吗?

标签 java swing oop inheritance

过度使用继承?

Java Swing 和 Java2D 在很大程度上依赖于继承。大多数人告诉我应该尽可能避免继承,只在必要时才使用它。那么在 Java2D 和 Java Swing 中广泛使用 Inheritance 是否合理?

适配器模式

我听到过很多对适配器模式的赞美,也听到过很多批评。然而,我从所有这些中收集到的是,只有在正确的地方使用适配器模式才被认为是好的设计。不相关地使用适配器模式会导致阅读您的代码的人皱眉。在两个 Java API 中是否正确且相关地使用了适配器模式?

单例

这两种 API 也倾向于使用相当数量的单例。这样好吗?

问题

那么,Java2D Api 和 Java Swing 是面向对象编程接口(interface)的一个很好的例子吗?我应该在我的代码中使用他们的技术吗?

最佳答案

我对此不确定,但我可以提供一些想法:

  • 继承:假设您更喜欢在 Swing 中使用接口(interface)和组合而不是通过继承重用,那么您将需要做大量的转发(Component JComponent 有几十种方法)

  • 适配器模式:见上文

  • 单例:它们适用于为系统中真正独特的部分建模(我同意 java.awt.Desktop 可以作为单例实现——即使它使用一个工厂方法)

  • 总体设计:您可能会选择以结果来判断事物 -- Swing 健壮、可扩展且使用广泛。

关于java - Java2D 和 Swing 是 Good Use OOP 的例子吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9451311/

相关文章:

java - 完成垂直弦

php - 如果对象在同一类中实例化,则可以公开调用私有(private)函数

java - 使用 @RequestHeader ("Authorization") 参数但不在方法体中使用它?

java - 如何在不设置新表模型的情况下刷新 JTable?

java - 如何切换两个JComboBox的位置或交换内容?

java - 将从网络摄像头获取的图像添加到现有的 JPanel

javascript - javascript 对象属性的绑定(bind)

c++ - 从对象中获取项目集合的最佳实践?

java - 并行与串行实现解释

java - 我想知道添加到 blob 存储的文件的位置