【问题标题】:How to populate a list of interfaces?如何填充接口列表?
【发布时间】:2013-07-08 07:57:05
【问题描述】:

我对 SOLID 原则还很陌生,我发现我经常遇到以下情况。

我有一个与接口绑定的任务的实现,当我需要使用类时,我只是将 DI 用于这样的接口。

例如,当我需要多个实现时,我的问题是该怎么做。

List<IDataSource> dataSources = new ArrayList<IDataSource>();
dataSources.add(new DataSourceOne());
dataSources.add(new DataSourceTwo());
.... and so one...

然后我将循环遍历数组以操作每个实现的接口方法。

这是不好的做法吗?有没有办法在没有新关键字的情况下填充列表?例如 c# 反射。或者是避免这种情况的设计模式?

【问题讨论】:

    标签: java oop architecture solid-principles


    【解决方案1】:

    当您想创建一个新对象时,您对 new 关键字有什么看法?

    您可以将代码简化为:

    List<DataSource> dataSources = Array.asList(
        new DataSourceOne(),
        new DataSourceTwo(),
        ...
    );
    

    虽然它有一些用途,但使用反射几乎总是一个非常糟糕的主意。

    【讨论】:

    • 这确实是我的问题的一部分,这样做算 SOLID 吗?
    • @Lunar 我认为这是“一个正交问题”。您可能希望在通过构造函数将列表赋予将使用它的对象之前构造列表。
    猜你喜欢
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 2013-10-22
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多