【问题标题】:Clean architecture practice for my Java project [closed]我的 Java 项目的清洁架构实践 [关闭]
【发布时间】:2016-04-24 16:44:24
【问题描述】:

如果您有任何想法,我想问一下,让我的 Java 项目的架构更整洁。

  abstract class rdfDataChecker {
    List<T> data;
    // all abstract methods to check data... more than 20 methods. They all use the list "data". 
    }

    // the idea of this interface is, that all the data loaders can just use feedable.feed(List<T>). (we inject this dataChecker to the data Loader).
    interface Feedable {
    void feed(List<T>);
    }

   //implementations in different java frameworks.
    class specificRdfDataChecker extends rdfDataChecker implements Feedable{
    // implement all the methods.
    }


   class DataLoader {
   private Feedable feedable;
   public DataLoader(Feedable feedable) { 
   this.feedable = feedable;
   }
   }

提前感谢您的建议。

【问题讨论】:

  • 我投票决定将此问题作为离题结束,因为代码审查问题应该在 CodeReview.SE 上提出,而不是 Stack Overflow。

标签: java oop interface architecture


【解决方案1】:

这种模式是一种常见且可接受的模式——它甚至被用于 Java 库中。请参阅 ArrayListextends AbstractListimplements List

【讨论】:

  • 谢谢。抽象类有大约 20 个方法,要找到方法,我必须搜索。还好吗?或者我应该把这门课分成不同的部分吗?
  • @javadeveloper - 如果在你自己的代码中难以找到正确的方法,那么想想其他人会有多困难。是的,当然要重构,直到使用起来很容易(对于您选择的 easy 的任意定义)。
【解决方案2】:

您可以尝试以下操作:

  1. 使用Strategy Pattern 而不是Template Method - 使用组合总是比继承更好。
  2. 您应该查看 RdfDataChecker 类,看看是否可以将一些代码提取到不同的类。
  3. 将列表数据设为私有 - 每个类都应封装自己的字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2021-02-12
    • 2017-02-22
    • 1970-01-01
    • 2021-01-05
    相关资源
    最近更新 更多