ケーブル自体が単方向(異なるジャック)になるようにインターフェイスを使用してUSBケーブルをモデル化する方法はありますが、理論的には「出力」側を「入力」側に接続できますが、入力から入力には接続できません。
たとえば、次のモデルを作成しようとしています
* -> + -> * -> + etc...
ただし、* -> * -> ... または + -> + -> ... のようなものは決してありません。
ただし、* と + は基本的に交換可能です。* が再度使用できるようになる前に、 -> プロセスを通過することを確認したいだけです。
アイデアは非常に単純です。出力は入力として使用できますが、入力は出力として使用できます...しかし、入力と出力はデータに関してほとんど交換可能です(単なるデータのストリーム)。
(アダプターパターンを使用する必要があるようですが、何らかの方法で複合パターンを使用したいので、明示的に何も適応させる必要はありません。プラグアンドプレイで動作し、適切な接続が選択されるようにしたいです)
例えば、
interface data;
interface input : data;
interface output : data;
これにより、入力を入力または出力に送ることができます。