0

私は(PHPで)電子メールバウンスハンドラークラスを作成しました。これは当初、適切にフォーマットされたRFC準拠の電子メールバウンスメッセージを解析するためだけのものでした。ただし、時間が経つにつれて、非準拠のバウンスメッセージを処理するメソッドを追加し続けました。これは、バウンスの別の「タイプ」であると言えます。次に、お客様のご要望にお応えして、3回目のバウンスであるARFメッセージのサポートを追加しました。そしてもちろん、非準拠のARFメッセージが浮かんでいるので、そのためのパーサーも追加する必要がありました。

したがって、クラスは4つのバウンスタイプを処理します。

  1. RFC準拠
  2. RFC非準拠
  3. ARF準拠
  4. ARF非準拠

いくつかのタイプのメッセージがあるということは、適切な内部解析関数を呼び出し、結果を照合して返す初期化関数に「テキストスニファー」を配置する必要があることを意味します。この部分は重要です。次のように、電子メールテキストを受信し、フォーマットされた配列(is_a_bounce = yes / no、is_an_ARF = yes / no、RFCコード、拒否された受信者の電子メールアドレス)を返す単一のパブリックメソッドが必要だからです。

$arrayResult = $bounceHandler->parse($raw_email_text);

問題は、クラスが乱雑で混雑しているため、より正式で正しいOOPデザインパターンにリファクタリングしたいと思います。

  • どのデザインパターンをお勧めしますか?
  • PHPの例や記事/ブログはありますか?

前もって感謝します

4

1 に答える 1

0

基本的に、バウンスの処理方法を抽象化し、さまざまなバウンスを処理するためのさまざまな実装を持つクラスを記述しているようです。これは、ブリッジデザインパターンの説明と一致します。

基本的に、インターフェース(この場合は関数parse($ raw_email_text))を提供し、メッセージを「スニッフィング」した後に使用するハンドラー実装を決定する抽象化クラスがあります。

ハンドラー実装のインターフェースを作成して、新しい機能が必要になったときに利用可能な代替実装を拡張できます。また、抽象化が同じインターフェイスを実装していることを確認して、ユーザーがメッセージのタイプを知っている場合に抽象化の代わりに実装を使用できるようにすることもできます。

于 2013-02-21T11:11:51.783 に答える