彼らはクラスを書かれている場合はアスペクト指向プログラミングのAOP--ロック、キャッシュ、ロギング、トレース、これらのより一般的な操作の同期は、各クラスは、この問題を解決するために多重継承は非常に醜い、AOPがされて使用してこれらの関数を使用します

アプリケーション例


まず、同時に同時にアクセス共有データが存在しなければならない、アプリケーションシステムを考える データがカプセル化されている データ・オブジェクト と呼ばれるデータクラス、同時に、同時にアクセスするように設計された、複数のクラスへのアクセスがありますこの同じデータオブジェクト。
同じリソースへの上記の同時アクセスを達成するために、あなたはすぐに実行した後にロック解除された、データオブジェクトにアクセスするためのアクセスクラスがあるときつまり、ある時点で、データオブジェクトがロックされ、ロックされている必要があり、ロックのロックの概念を導入する必要がありますアクセスの他のアクセスタイプのために、その後、ロック解除されました。
伝統的なプログラミング手法を使用して、我々が作成する 抽象クラスを 以下のように、すべてのアクセスクラスは、抽象親クラスを継承します。
1
2
3
4
5
abstract  class  Worker {
     abstract  void  locked();
     abstract  void  accessDataObject();
     abstract  void  unlocked();
}
accessDataObject()メソッドは、関連するコード「ロック」状態などが必要です。
Javaは単一継承のみを提供し、その特定のアクセスクラスは、特定のアクセスクラスは、そのような別の親の労働者など、他の親は、達成することは容易ではないだろう継承する場合でも、親クラスを継承することができます。
再利用は、特定のアクセスクラスは、コードに含まれているので、該当する場合、再利用、「ロック」非常に狭い範囲内で再利用することができ、「ロック」状態など割り引かれます。
慎重な研究では、アプリケーションを「ロック」、それは実際には次の特徴があります。
プライマリまたは「ロック」機能の主な機能は、特定のアクセスタイプ、アクセスクラスメイン関数ではないような読取データ又は変更動作として、データオブジェクトにアクセスすることです。
「ロック」機能は、クラス、メソッド、多くのクラスの数を含む、実際にシステムの縦断面図です。このような権利のように:
したがって、新たなプログラム構造は、「ロック」機能のアプリケーションとして、システムの縦断面を心配する必要があり、新たなプログラム構造は、アスペクト(側面)であります
このアプリケーションでは、「ロック」側面(アスペクト)は、以下の責任を持つべきです:
アクセスされたオブジェクトの機能をロックまたはアンロックを達成するのに必要な機能の一部を提供します。内のすべての修正ことを保証するために、 データ・オブジェクト 操作の前には、ロック()ロックを呼び出す終了後にそれを使用することができ、ロック解除()ロック解除を呼び出します。

アプリケーション

編集します
明らかに、J2EEコンテナサーバを開発するためのAOPの理想的には、JBossの4.0は、開発のためのAOPフレームワークを使用することです。
次のように具体的な機能は以下のとおりです。
認証権限
キャッシュ キャッシュ
コンテキストパッシング コンテンツ配信を
エラー処理  エラー処理
遅延読み込み遅延ロード
デバッグデバッグ
ロギング、トレース、プロファイリングとモニタリング記録は、画像を追跡します
パフォーマンスの最適化パフォーマンスの最適化
持続性の持続性
リソースプーリング リソースプール
同期同期
トランザクション トランザクション
[AOP必要?]
もちろん、AOPを使用しない場合に、上記適用例は、例えば、JBossの3.XXXはまた、上記アプリケーションを提供し、AOPを使用しない、解決されています。
しかし、AOPは、ソフトウェアシステムを理解するために、より高い抽象化から私たちを可能に使用して、AOPは貴重なツールを提供することができます。それは言うことができます。構造はAOP、理解する方がはるかに簡単にJBoss 3.Xよりも非常に重要であり、大規模で複雑なシステムのためのJBoss 4.0のソースコードを使用しているため。
誰もがAOPを心配する必要がないようです別の観点から、それはあなたがJ2EEシステムを選択した場合、AOPの懸念の汎用側面は、J2EEコンテナ、J2EEアプリケーションの開発を実現してきた、建築デザインを選択することができあなたは、業界のアプリケーションの側面にもっと注意を払う必要があるかもしれません。
伝統的なプログラムは、多くの場合、単一のためのいくつかの自然なフィット表示することはできません プログラムモジュール AOPは、この動作を横断的に呼び出される、またはいくつかの密接に関連したプログラムモジュールの動作を、彼らは与えられたプログラミングモデルの典型的な職務の境界を越えました。散乱される横断動作を実装、 ソフトウェア設計者は、 それが困難な通常のロジック、実装と変更してこの動作を考えることでしょう。次のようなこれらの横断行動の最も一般的なのいくつか:
ログ記録、追跡、最適化および監視
処理サービス
持久化
パフォーマンスを最適化
以下のようなプールのリソース、 データベース接続プールの 管理
統一認証システム、著作権管理など
異常なキャプチャおよび処理アプリケーションシステム
特定の産業用アプリケーションのための横断的行動
横断行動が密接に貴重な様々なアプリケーションが存在している、見て、おそらく今後数年間されてきたいくつかの前には、業界固有のアプリケーションへのAOPの寄与は関心の焦点になるだろう。

プロジェクトの実装

AOPは、特定の言語の設定を達成していない概念が、それはこれらの欠点に言語(Javaなど)、以下の項目のAOP具体的な実現の唯一の継承機能を克服することができます:
AspectJの(TM):ゼロックスPARCは、歴史のほぼ十年、成熟した設立されました。
短所:複雑すぎる;カプセル化を破る;専門のJavaが必要です コンパイラを
動的なAOP:JDKダイナミックプロキシAPIや バイトコード バイトコード処理技術。
特定のプロジェクトに基づいて動的プロキシAPIは以下のとおりです。
JBossの4.0 JBossの4.0サーバー
プロジェクトベースのバイトコードです:
aspectwerkz、春

効果

プロセス指向の プログラミングは、私たちからやや遠いれている オブジェクト指向プログラミング ソフトウェアの世界を支配しています。それぞれの新しいとして ソフトウェア設計者は、 一つのクラスに機能要件を変換し、その定義方法を習得するために必要とされている データメンバーの ときの動作、およびそれらの間の複雑な関係、アスペクト指向プログラミング(アスペクト指向プログラミング、 AOP)私たちに新しいアイデア、新しいアイデア、新しいモデルをもたらしました。
オブジェクト指向プログラミングは異なる独立した、よくパッケージされたクラスへの需要関数について懸念していると継承とに頼って、自分の行動でそれらを持っている場合は 多型 の関係を定義するようにして、それから、その指向プログラミングでありますこれは、変更がクラスの多くを変更する必要はありません一度、クラスの多くは行動を共有することができます無関係の機能要件の一般的なクラスを分離できるようにすることですが、唯一この動作はすることができ、変更する必要があります。
アスペクト指向プログラミングは、 エキサイティングな新しいモードです。ソフトウェアシステムの開発にするために、その影響が適用との歴史の十年持つことになる オブジェクト指向プログラミング 大きなとしての。 以下のため のセクションプログラミングとオブジェクト指向プログラミングの競合技術だけでなく、お互いの良い補完だけではありません。オブジェクト指向プログラミングは、主に公共の同じ目標レベルのために使用されている 行動のモデル化 その弱点は、モデルで使用される複数の無関係なオブジェクト間の一般的な動作です。適切なプログラミング指向のところ、これは正確です。AOPにより、我々は相互間の関係を定義することができ、互いのオブジェクトモデルとは異なり、モジュール間でこれらの関係を適用します。AOPはまた、コードをより読みやすく、保守が容易になり、私たちの階層の機能ではなく、組み込み機能をさせることができます。オブジェクト指向プログラミング、それがうまく働きました

おすすめ

転載: www.cnblogs.com/bonelee/p/11539930.html