アプリケーションの開発中は、コンポーネントを互いに独立させておくことが必須であり、これが疎結合です。これにより、アプリケーションの標準化、統合、正規化、ガバナンスが実現します。疎結合アプリケーションはスケールアップが簡単です。
この記事の内容: アプリケーションを疎結合にして最大限に活用する方法を例を用いて学びます。
UserDatabase データベースから何かを取得しているとします。データベース レコードを取得するためにデータ層で定義された関数は次のとおりです。
public class UserDatabase { public String getUserDetails(){ return "User Deatils "; } }
サービス層で、レコードを取得するためにデータ層と通信する関数を作成しましょう。
public class UserDatabase { public String getUserDetails(){ return "User Details in DB1"; } }
アプリケーション層またはメイン関数で、サービス層と通信します。
public static void main(String[] args) { //Tight Coupling UserManager userManager = new UserManager(); System.out.println(userManager.getUserInfo()); }
このアプリケーションでは、アプリケーションをスケールアップしようとすると、密結合により冗長になり、拡張が困難になります。
だからこそ、疎結合アプリケーションは非常に重要であり、スプリング ブートではインターフェイスを使用してそれを実現します。上記のアプリを疎結合にしてみましょう。
データ層の全体的な構造を与えるインターフェイスを定義しましょう:
public interface UserDataProvider { String getUserDetails(); }
このインターフェイスを実装しながらデータベース レコードをフェッチします:
public class UserDatabase implements UserDataProvider{ @Override public String getUserDetails(){ return "User Details in DB1"; } }
次に、データ層と通信するためのサービス層を定義します。
public class UserManager { private UserDataProvider userDataProviderr; public UserManager(UserDataProvider userDataProvider) { this.userDataProviderr = userDataProvider; } public String getUserInfo(){ return userDataProviderr.getUserDetails(); } }
ここでは、UserDataProvider 参照オブジェクトを UserManager に挿入しているときに、そのインターフェイスを実装する UserDatabase 関数にアクセスできるようになり、そこで抽象化が提供されます。データ層のレベル。
これで、UserManager を通じてレコードにアクセスできるようになります:
UserDataProvider userDataProvider = new UserDatabase(); UserManager userManager = new UserManager(userDataProvider); System.out.println(userManager.getUserInfo());
WebServerDatabase などの別のデータベースを構成する必要がある場合と同様に、アプリケーションを簡単にスケールアップして、必要な数のデータベース接続を統合できます。必要なのは、実装されたインターフェイスに割り当てられたそのインスタンスを作成することだけです。 UserManager を介してこれにもアクセスできます。インターフェイスを使用すると、抽象化、疎結合、ポリモーフィズムが提供されます (同じインターフェイスを異なるクラスで実装するとポリモーフィズムが提供されます)。
コーディングを楽しんでください:)
以上がアプリケーションを抽象化とポリモーフィズムの疎結合にするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。