スレッド ロジックとビジネス ロジックを結合するのは一般的な方法ですか? テスト駆動開発を念頭に置いて、スレッド化ロジックに関連付けられているビジネス インテリジェンスをテストする利点/欠点があるかどうか疑問に思っています。次のことを考慮してください。
class Thread { ... }
class FooThread : public Thread {
/* business intelligence coupled to threading */
}
また、
class Thread { ... }
class Foo {
...
/* once again coupled */
Thread th;
}
これらのアプローチは、クラスをテストする際に依存関係を抽象化しようとすることに多少反対しているようです。代わりに、おそらくテンプレートを使用して、スレッドから完全に分離してインスタンス化できるクラスを設計することは可能/受け入れられるでしょうか?
template<class SomeFooClass>
class Thread { ... }
class Foo {
/* this class can be tested separately */
}
typedef Thread<Foo> FooThread;
これには利点/欠点がありますか?これと同じアプローチを使用して、ビジネス ロジックを他の一般的な設計パターンから切り離すことはできますか?