-1

インターフェイス、インターフェイス クライアント、および継承をパッケージ化する方法に関して、1 つの問題に遭遇しました。つまり、以下の本で著者は、Light よりも Switch と一緒にコンポーネントとして展開するのに Switachable の方が適していると述べています。

私が理解したいのは、その背後にある理由 (Switch と Switchable の両方が、Switchable と Light ではなく、1 つのコンポーネントにパッケージ化されている) と、可能であれば例です。

両方のシナリオが成り立つ場合もあると思います。その設計に反する例として、IStream と FileStream が 1 つのコンポーネントにあり、ISream クライアントが別のコンポーネントにあるというものがあります。

以下は、C# ch 33、p497 の unclebob のアジャイルからのものです。

ここに画像の説明を入力

4

1 に答える 1

1

はからLight継承されているためSwitchable、 を使用して展開することもできますSwitchable- ただし、命名により、Switchableインターフェイスとやり取りするプライマリ クラスは になるようですSwitch- これは、2 つが密結合であることを意味します: 密結合クラスを配置しないでください/interface 定義を別のアセンブリに。

または のセット全体Switchableなど、他のクラスを考えることもできます。これらは後日追加される可能性があり、 とは関係ありません。つまり、とは必ずしも同じコンポーネントの一部ではありません。ただし、クラスは引き続きこれらの新しいクラスに適用され、適用されます。OutletAppliancesLightLightSwitchableSwitch

(インターフェイスの別のコンシューマーが考えられることは事実ですが、最後に呼び出されたメソッドを記憶してオン/オフ状態を切り替えるSwitchableなど、厄介な適応になる可能性があります。ただし、選択された名前では、依然としてaが関与している可能性があります。)ToggleButtonSwitchableSwitch

これがあなたの質問に答えることを願っています。

于 2011-07-09T21:12:44.040 に答える