開発者が特定の実行ポイントでコードを拡張できるようにしようとしています。特定のポイントでコードを挿入できるデザインパターン
私の具体的な例は、データベーストランザクションラッパーです。ラッパーは、開発者から抽象化したい多くの詳細を処理し、いくつかのプロジェクトで使用されます。
しかし、各プロジェクトでは、トランザクション中に自動的にやりたいことがいくつかあります。私は各プロジェクトがコードを実行するために設定できるインターセプトポイントを追加したいと思います。
たとえば、データベースの各テーブルには、レコードが変更されるたびに更新される[入力日]フィールドがあります。ただし、多くのレコードがタッチされた場合(つまり、テーブルAのレコードが4つ、テーブルBのレコードが1つ)、トランザクションのすべての日付が同じであることが必要です。
"TransactionStarting"、 "TransactionStarted"、 "StatementExecuting"、 "StatementExecuted"などのインターセプトポイントを定義し、各ポイントにコンテキストオブジェクトを渡すことを考えました。
プロジェクトでは、 "TransactionStarted"ポイント中に現在の日付を格納するクラス "EnteredDateManager"を定義し、 "StatementExecuting"ポイント中に各オブジェクトのEnteredDateプロパティを更新できます。
私はこれをweb/app.configファイルに設定し、複数のインターセプトクラスを登録できるようにしたいと考えています。複数のクラスが登録されている場合は、登録された順番で起動する必要があります。
私はイベントを起こすことを考えていましたが、私は秩序を築きたいと思っています。私はまた、異なるポイント間で状態を共有できるようにしたい。上記の例では、EnteredDateプロパティはTransactionStartedポイントに設定され、StatementExecutingポイントで使用されます。
これは責任パターンですか? AOP? ASP.Netパイプラインの仕組みに近いようですが、イベントを使用していて、私が知る限り発注を保証するものではありません。
いずれの方向/例も素晴らしいでしょう。
ありがとう