对象层次结构中的依赖注入

时间:2017-03-30 21:39:57

标签: oop design-patterns dependency-injection interface

我是这样的类图:

k=5
kk=$(awk "BEGIN{print 1/$k}")
ffmpeg \
    -i $src_video_path \
    -an \
    -loglevel error \
    -filter_complex \
        "setpts=$kk*PTS, \
        scale=w=2*trunc(128*max(1\, iw/ih)):h=2*trunc(128*max(1\, ih/iw))[m]; \
        [m]select=n=$k:e=(mod(n\,$k)+1)*lt(n\,$max_frames) \
        $(for ((i=1; i<=$k; i++)); do
            echo -n "[a$i]"
        done)" \
    $(for ((i=1; i<$k; i++)); do
        echo -n "-r $fps -map [a$i] $dst_video_path/$i.mp4 "
    done
    echo -n "-r $fps -map [a$k] $val_video_path/$k.mp4"
    )

TopClass ◆ ◆ | | SubClass1 SubClass2 ◆ ◆ | | | ChildClass2 | ChildClass1 TopClassSubClass1SubClass2Subclass1ChildClass1

我在每个类上使用依赖注入。因此,当ChildClass2需要界面ChildClass1时,我需要通过XXTopClass。当Subclass1需要ChildClass2时,我还需要通过整个层次结构传递它。最终我得到Y完全依赖于它实际上没有使用的接口。我发现它很臭。

我发现article about facade pattern似乎很有希望,但最终我找不到在我的情况下使用它的方法。

还有其他想法吗?我不想使用单例或任何类似的解决方案,因为我需要能够轻松地对这些类进行单元测试。

修改

我刚刚找到的另一个选项,我将要测试一段时间是boost.DI:

http://boost-experimental.github.io/di/cpp-london-2017

http://boost-experimental.github.io/di/

0 个答案:

没有答案