2016-03-22 10 views
0

私はOOPと "デザイン"/"アーキテクチャ"の初心者です。ページ内にさまざまな要素があるかどうかを調べるために、オブジェクト(GET要求の結果はGoutteを使用しています)で動作するクラスがあります。OOPとデザイン:通知のための良い場所

isHtml5またはgetAnalyticsCodeのような方法があります。

ユーザーフレンドリーな通知を提供するために、私は各メソッド内で、チェックの結果を説明する通知メッセージを設定しました。

たとえば、doctypeがHTML5ではない場合、isHtml5には$this->setNotification('Page is not HTML5')のようなものがあります。

Controller内のビューに表示するために通知を順番に取得します。

このクラスについて考えると、その通知はそこに属していないように思えます。しかし、私はそれらを置くべきか分からない。

私はコントローラーについて考えましたが、私は他のアダプターを使用したいと思っています。コマンドラインまたはAPIを使用している場合は、すべてのapdatersを通じてこれらの通知を複製します。しかし、それほど悪くはないかもしれません...(私はこれらの通知の可能な翻訳とそれを行う方法についても混乱していますが、これまでのところデザインには存在しません)。

アイデアや提案はありますか?リソース私は見てみる必要がありますか?可能であれば、私はきれいなコードを持つことができ、あまりにも多くのことをやってしまうことはありません(私はすでに、過度に複雑にする傾向があります... ^^)。

ありがとうございます。

答えて

1

解決策を設計する方法はたくさんありますが、すべてが良いと見なすことができます。要件に応じて、時にはシンプルな(論理的には健全な)デザインは、非常に複雑な(過度の)デザインよりも優れています。

私は強くお勧めしますHeadfirst OO Design。私はそれが中級/上級レベルのための良いリソースだと思います。

あなたの現在の問題に関しては、私は次のデザインが良い候補になると思います。

A Notification Class: //Depending upon implementation, This can be private to notification service class 

private notificationType; 
private notificationMessage; 
private notificationPriority; 
//Or just the message 
//All Getters and Setters 

A NotificationService class: 
private List<Notification> notifications; //Can be LinkedList 
static getInstance(); 

// To create and add notification to list 
public void addNotification(String msg); // Can have other items too.. 

//get the copy of list for printing or other purposes 
public List getNotifications(); 

これは複雑ではありません。繰り返しますが、設計は問題のドメインに依存します。通知インタフェースを作成し、そのインタフェースを実装するさまざまなクラス(通知タイプごとに)、およびすべてを処理するメインのマネージャ/サービスクラスを作成することによっても同じことができます。

あなたは「ものを過度に複雑にする傾向があります」と言いますが、何も削除することができないデザインを持つ方が良いでしょう。

関連する問題