2011-07-28 4 views
0

たとえば、 オンラインショップを3つの部分に分けたいと思います。 ユーザー:ユーザー関連の情報(たとえば、ユーザーがログインした場合など)。ログアウト。 コミュニケーション:電子メールまたはニュースレターモジュールを送信します。 ShoppingCart:注文を表示しています。アプリケーションの責任を分ける方法は?

これら3つのモジュールは、私の小さなオンラインストアの主な機能です。 明らかに、ユーザーメイドルは、自分のものを扱う、例えば、ユーザーは自分のプロフィール写真を変更する(大丈夫、それは一例だと思うのですが、それは一例だと思うだけです)。

ユーザー---コール--->ユーザー

しかし、私はここに問題を抱えて、ユーザーがクロスモジュールのコールを必要とするいくつかの機能を実行するときです.... 私は例をあげてみようユーザーがパスワードを紛失した場合、ユーザーは通信方法を使用して新しいパスワードを送信する必要があります...状況は次のようなものになります。

user ----call---> communication 

悪い状況では、すべてのモジュールを使用しています。 ショッピングカートを使用してショッピングをした後、注文を行い、請求書を使用して通信モジュールを使用しますユーザーに送信する。

user ----call---> shoppingCart ---call---> Communication 

。したがって、各モジュールが分離しないで、すべてのモジュールは、お互いを知っている....しかし、私は、例えば、この時間は、私は、たとえば、新しいアプリケーションをやっていることを行うにはしたくない、I 「ユーザー」と「コミュニケーション」だけを使用するビデオ共有Webサイトを行うと、私は実際に「shoppingChart」は必要なく、新しいビデオモジュールを持っています.....

私にとっては "アップグレードする "私のユーザーと通信方法は、ビデオモジュールを扱うが、問題は、私は何かが間違っているとき、私はオンラインショップのアプリケーションを"アップグレード "する必要がある場合、例えば、getFullNameメソッドは、私はあまりにも "ビデオ"モジュールを取る必要が.....

私が尋ねたいのは、責任を分ける方法と、コードをより再利用可能にする方法です。ありがとうございました。

答えて

0

アプリケーションの結合を最小限に抑えることをお勧めしますが、完全に削除することは必ずしも可能ではありません。

私の推薦は、各アプリケーションのために、このようgetFullName()その後

としてだけで基本的なインタフェースを提供する基底クラスUserCommunication、およびShoppingCartを構築し、あなたの基底クラスと相互作用することができる別のラッパーを書くことであろう。 OnlineShoppingクラスとVideoSharingクラスがあり、それぞれのアプリケーションに固有の必要な機能が含まれています。

structural patternsがあり、デザインに役立つことがあります。また、すべてのアプリケーションで同様の機能の継承を活用してください。

関連する問題