私は2つのクラスファイルを持っている(WallSwitch
とProximitySwitch
) -メソッドを実装する-のは彼らだ、サードパーティが提供するコンポーネントとしようOn()
とOff()
からIUserController
、私はシステムを消費し、私のコアに内蔵されているインタフェース。
すなわち、 - 、サードパーティが提供する-私は、また、三つのクラス有しCeilingFan
、Lightbulb
およびCCTVCamera
からメソッドを実装し、ICeilingComponent
コアシステムの一部であるインターフェイスを、。これらのICeilingComponent
実装クラスはインスタンス化され、IUserController
継承クラスに注入されます。次に例を示します。
ICeilingComponent component = new LightBulb();
IUserController controller = new WallSwitch(component);
次に...
controller.On();
controller.Off();
みんな幸せです。
これで、サードパーティが提供する新しいコンポーネントがありますDimmerSwitch
。これIUserController
はOn()
とのメソッドも実装しますOff()
が、DimmerSwitch
クラスはさらにメソッドIncreasePower(int amount)
とを実装します。DecreasePower(int amount)
これはCeilingFan
と(調光可能)Lightbulb
にのみ影響し、CCTVCamera
。
これをコアシステムに対応させたいのですが、他のサードパーティコンポーネントに、実装を契約したインターフェイスで説明されているように構造を変更せずに、それを行う方法を理解できていません。それが重要な部分です。他の場所での変更に影響を与えることなく、コアシステム内でこれを処理できる方法が必要です。
正しく理解できなかったデザインパターンまたはインターフェイスの方法論は何ですか?
私はこれをすべて書き留めることがどういうわけか私に解決策を提示することを望んでいました。しかし、いや。たぶん、私は今、木のための木を見ることができません。私が正しい用語だと思ったものを検索しました。これは確かに一般的な問題であるに違いありません。私を馬鹿げたように見せてください。
PSこれは明らかに現実の問題ではありません-私は確かに電圧についての議論を奨励したくありません。しかし、これも宿題ではありません。私がそんなに若かったらいいのにと思います。私は理解を容易にするために、この問題に頭を悩ませようとしています。どんな回答も歓迎します(電荷に関するものを除く)。
このように、たとえばIEnhancedUserControlと呼ばれる拡張インターフェイスを作成できると思います。
interface IEnhancedUserController : IUserController
{
void IncreasePower(int amount);
void DecreasePower(int amount);
}
次に、CeilingFanとLightbulbは、元のインターフェイスではなく、この拡張されたインターフェイスを実装します。このようにして、元のインターフェイス、CCTVCameraなどの残りのコードの変更を回避できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加