建物の「火災およびセキュリティ警報監視システム」に属する次の状況を考えてみてください。
Zone
、およびの 3 つのクラスがController
ありCamera
ます。Controller
建物の中央制御装置に似ています。にオブジェクトの配列があるようにController
を制御します。コントローラーは、カメラからのデータの読み取り、カメラの電源のオフ、電源のオン、データベースへのデータの記録など、さまざまなタスクを実行できます。Camera
Camera
Controller
コントローラー.java
public class Controller
{
private Camera[] camera;
public byte[] getVideo()
{
}
}
Zone クラスはコントローラからデータを読み取り、コマンドをコントローラに渡します。
Zone.java
public Zone extends JPanel
{
private Controller ctrl;
}
これらのゾーンは建物の「部屋」に似ているため、6 つのゾーン オブジェクトがあります。ゾーンが異なればカメラの数も異なり、異なるコマンドがController
6 つのゾーン オブジェクトがあっても、コントローラーは 1 つである必要があります。これは中央のコントロール ユニットであり、ゾーンごとに異なるコントロール ユニットを配置することはできません。ただし、「コントローラー」には、異なるゾーンに属する異なるカメラ オブジェクトが必要です。たとえば、ゾーン 1 に 5 台のカメラ、ゾーン 2 に 2 台のカメラなどです。したがって、コントローラはさまざまな方法でカメラ オブジェクトを制御できます。
コントローラーは、建物全体にも影響を与えることを行います。たとえば、セキュリティ アラームの発生。
ただし、ゾーンごとに新しい Controller オブジェクトを作成すると、建物全体に影響するタスクを実行できなくなります。コントローラーを単一パターンにすると、ゾーンごとに異なるカメラ オブジェクトを作成し、ゲッター メソッドを使用してそれらのデータを個別に取得することができなくなります。
では、どうすれば両方を達成できますか?繰り返しになりますが、建物には部屋の数に対してコントローラーを配置できないため、コントローラーは1つにする必要があると思います。