プロキシモード
6480 ワード
「代理」という言葉はスポークスマンを意味する.誰にも代わって実行する意味で、設計モードでもこの方式が採用されている.恋人感があるのではないでしょうか.現実考証は誤診された.
まず、エージェントを適用していないコードを見てみましょう.
[Service]
では、エージェントモードを適用したらどうなるのでしょうか.プロキシ・モードでは、実際のサービス・オブジェクトと同じ名前のメソッドを使用し、インタフェースを使用してこの目的を達成します.
インタフェースを使用すると、クライアントが実際のサービス・オブジェクトを介してメソッドを呼び出すかどうか、戻り値を受け入れるかどうか、プロキシ・オブジェクトを介してメソッドを呼び出すかどうか、戻り値を受け入れるかどうかを全く知らないように、プロキシ・オブジェクトの代わりにプロキシ・オブジェクトを入力できます.
コードを見てみましょう.
[IService]エージェントは、実際のサービスと同名の方法を実施する.インタフェースを使用します. エージェントは、実際のサービスの参照変数を有する.(合成) エージェントは、実際のサービスと同じ名前のメソッドを呼び出し、その値をクライアントに返します. エージェントは、実際のサービスメソッド呼び出しの前後で個別の論理を実行することができる. エージェントモードはさっき何を言いましたか?スポークスマンって言ったでしょ.スポークスマンのしたことを考えると、本人の意見を言っているのではなく、ある会社、政府、機関などの意見を代表して、自分の意見をプラス、マイナス、プラスしない.エージェント・モードが実際のサービス・メソッドの戻り値を変更していないのを見ると、わかります.
エージェント・モードの目的は次のとおりです.
制御フローの変更またはその他の論理の実行
では、エージェントモードを文として定義しましょう.
中間にエージェントを配置して制御フローのモードを調整
理解して欲しいこの例で使用するエージェント・モードでは、以前のSOLIDを思い出すことは明らかです.
ここでは開放閉鎖原則と依存逆転原則の設計モデルを採用しているからである.
まず、エージェントを適用していないコードを見てみましょう.
[Service]
package proxyPattern;
public class Service {
public String runProcess() {
return "Process";
}
}
[ClientWithNoProxy]public class ClientWithNoProxy {
public static void main(String[] args)
{
Service service = new Service();
System.out.println(service.runProcess());
}
}
上記のコードがあれば、クライアントがrunProcess()メソッドを直接呼び出すことがわかります.では、エージェントモードを適用したらどうなるのでしょうか.プロキシ・モードでは、実際のサービス・オブジェクトと同じ名前のメソッドを使用し、インタフェースを使用してこの目的を達成します.
インタフェースを使用すると、クライアントが実際のサービス・オブジェクトを介してメソッドを呼び出すかどうか、戻り値を受け入れるかどうか、プロキシ・オブジェクトを介してメソッドを呼び出すかどうか、戻り値を受け入れるかどうかを全く知らないように、プロキシ・オブジェクトの代わりにプロキシ・オブジェクトを入力できます.
コードを見てみましょう.
[IService]
package proxyPattern;
public interface IService {
String runProcess();
}
[Service]package proxyPattern;
public class Service implements IService{
@Override
public String runProcess() {
return "Process";
}
}
[Proxy]package proxyPattern;
public class Proxy implements IService {
IService service1;
public String runProcess() {
System.out.println("호출에 대한 흐름 제어가 주목적이며, 반환 결과를 그대로 전달한다");
service1 = new Service();
return service1.runProcess();
}
}
[ClientWithProxy]package proxyPattern;
public class ClientWithProxy {
public static void main(String[] args)
{
IService proxy = new Proxy();
System.out.println(proxy.runProcess());
}
}
以前のコードは、サービスを使用してオブジェクトを作成し、直接オブジェクトを宣言したのではないでしょうか.ただし、プロキシモードを使用すると、プロキシ呼び出しを行うことができます.さあ.エージェントモードの重要なポイントを確認して終了します.エージェント・モードの目的は次のとおりです.
制御フローの変更またはその他の論理の実行
では、エージェントモードを文として定義しましょう.
中間にエージェントを配置して制御フローのモードを調整
理解して欲しいこの例で使用するエージェント・モードでは、以前のSOLIDを思い出すことは明らかです.
ここでは開放閉鎖原則と依存逆転原則の設計モデルを採用しているからである.
Reference
この問題について(プロキシモード), 我々は、より多くの情報をここで見つけました https://velog.io/@devsh/프록시-패턴-Proxy-Patternテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol