Javaデザインモード-フェースモード
2830 ワード
定義#テイギ#
外観モードとも呼ばれ、一般的なデザインモードの一つです.コードには何気なくゲートモードが使用される可能性があり、一部のサードパーティのオープンソースSDKはAPI呼び出しを簡略化し、内部の詳細の露出を減らすために、ゲートモードのようなインタフェースを提供し、開発者の使用を容易にする可能性がある.
外観モードの定義を見てみましょう.
サブシステムの外部とその内部との通信は、統一されたオブジェクトを介して行わなければならない.ゲートモードは、サブシステムがより使いやすいように、高レベルのインタフェースを提供します.
インプリメンテーション
次に、エアコンシステムにより、ドアモードの使用を説明する.まず、エアコンのスイッチシステムを定義します.
次にファンシステム:
最後に温度制御システムを定義します.
エアコン関連の3つのサブシステムを定義したら、ファカイドオブジェクトを定義します.
顧客クラスを定義し、エアコンシステム呼び出しをシミュレートします.
印刷結果:
理解に難くないが,ファセットモードは各サブシステム間の関連を実現するとともに,サブシステム内部の具体的な実現を気にする必要がなく,AirControllerファセットを統一することでクライアント呼び出しを提供し,使用を簡素化する.
まとめ
フェースモードの利点は明らかであり、その欠点についていくつか説明する必要があり、上記の例によって、フェースモードには以下のいくつかの問題があることが明らかになった.サブシステムの増加または提供されるインタフェースの増加により、ゲートクラスインタフェースが冗長に膨張する. 外観類は開閉原則に従わず、「修正に対して閉鎖し、拡張に対して開放する」という定義に合致せず、業務が変更された場合、直接対外観類を修正する必要がある.
外観モードとも呼ばれ、一般的なデザインモードの一つです.コードには何気なくゲートモードが使用される可能性があり、一部のサードパーティのオープンソースSDKはAPI呼び出しを簡略化し、内部の詳細の露出を減らすために、ゲートモードのようなインタフェースを提供し、開発者の使用を容易にする可能性がある.
外観モードの定義を見てみましょう.
サブシステムの外部とその内部との通信は、統一されたオブジェクトを介して行わなければならない.ゲートモードは、サブシステムがより使いやすいように、高レベルのインタフェースを提供します.
インプリメンテーション
次に、エアコンシステムにより、ドアモードの使用を説明する.まず、エアコンのスイッチシステムを定義します.
public class PowerSystem {
private boolean started;
public void powerOn() {
if (!started) {
System.out.println(" ");
started = true;
}
}
public void powerOff() {
if (started) {
System.out.println(" ");
started = false;
}
}
}
次にファンシステム:
public class FanSystem {
public void adjustDegree() {
System.out.println(" ");
}
public void adjustPower() {
System.out.println(" ");
}
}
最後に温度制御システムを定義します.
public class TempSystem {
public void turnUp() {
System.out.println(" ");
}
public void turnDown() {
System.out.println(" ");
}
}
エアコン関連の3つのサブシステムを定義したら、ファカイドオブジェクトを定義します.
public class AirController {
private FanSystem fanSystem = new FanSystem();
private PowerSystem powerSystem = new PowerSystem();
private TempSystem tempSystem = new TempSystem();
public void adjustDegree() {
powerSystem.powerOn();
fanSystem.adjustDegree();
}
public void adjustWindPower() {
powerSystem.powerOn();
fanSystem.adjustPower();
}
public void turnUp() {
powerSystem.powerOn();
tempSystem.turnUp();
}
public void turnDown() {
powerSystem.powerOn();
tempSystem.turnDown();
}
public void powerOff() {
powerSystem.powerOff();
}
public void powerOn() {
powerSystem.powerOn();
}
}
顧客クラスを定義し、エアコンシステム呼び出しをシミュレートします.
public class Client {
public static void main(String[] args) {
AirController airController = new AirController();
airController.turnDown();
airController.adjustDegree();
airController.adjustWindPower();
airController.powerOff();
}
}
印刷結果:
理解に難くないが,ファセットモードは各サブシステム間の関連を実現するとともに,サブシステム内部の具体的な実現を気にする必要がなく,AirControllerファセットを統一することでクライアント呼び出しを提供し,使用を簡素化する.
まとめ
フェースモードの利点は明らかであり、その欠点についていくつか説明する必要があり、上記の例によって、フェースモードには以下のいくつかの問題があることが明らかになった.
Fynn_ , , !