2016-11-30 5 views
0

私はJavaに比較的新しいです - 特にインタフェースと抽象クラス(私はそれらを使用する方法を知っています)に関しては、このケースでは私は私のアーキテクチャをどのように設定すべきか混乱しています。まず第一に、これは単なる楽しいプロジェクトだと言いたいのですが、主な目的は経験を得ることです:-)。要約、インタフェース - 何を使用するか?

ビジネスに出ましょう!

私はあなたが商品を売買できるウェブサイトを作る素晴らしいアイディアを持っていました。私は(のNoSQL/MsSQLがしてしまう可能性があり、JSON、JAX-RSおよびデータベースのいくつかの種類を使用して考えています。

をしかし、私は建築を作成するのに問題があるようだ、とどのようにそれが適切に行われる必要があります。

すべての広告には共通点があります(写真、広告テキスト、価格など)。問題はありません。

:...このような私は...それは次のようになります意味

..カテゴリの下に広告「エレクトロニクス」カテゴリ「服」の下に別の広告とは異なる分野の多くを持っている可能性があるとして、人の

服 - >メンズ - >セーター

電子

- >電話 - >アップル

エレクトロニクス - >テレビ - >サムスン

地獄はあなたがそれをどのように扱うでしょうか?

2次の広告を想像:

AD1: テキスト:私は私のテレビを販売したい 価格:100USD TimeCreated:今日(日時、何でも) カテゴリー:エレクトロニクス サブカテゴリ:テレビ 画面サイズ:40 「 ブランド:サムスン モデル:700UHD

AD2: テキスト:10USD TimeCreated::私は私のズボン 価格を販売したいです日(日時、何でも) カテゴリ:服 サブカテゴリ:男性 ズボン? ブランド:ディーゼル サイズ:32 長さ:40 条件:バッド

私は本当にあなたのアイデアを得る願っています - 私はこの問題をどのように処理するかのようにイム本当に混乱して。

お時間をいただきありがとうございます。

+0

さて、あなたのウェブサイトに* Electronics *タブと* Phones *タブを持っていても、それらのクラスやインターフェースは必要ありませんか?私は本当にあなたが望むものを得ていないと思います。抽象クラスと一般的なインターフェイスの違いについては、これを見てください:http://stackoverflow.com/a/18778220/5221346 – Gendarme

+0

こんにちは、あなたの答えに感謝します。私はアンドロイドアプリとして起動します。私は新しい広告を作成するときに、それをすべてデータベースに保存する必要があります。私の問題は、作成することができるさまざまなタイプの広告を扱うことが難しい(少なくとも正しい方向を知らないときは)と思っています。広告に関する情報の量と種類は、カテゴリによって異なります.. – matn

+1

これは、必要以上に複雑にしています。あなたが鳥の眺めを取るならば、すべての製品には名前、価格、年齢、寸法、体重など多くの共通点があります。私は単純にそれらを最も一般的な方法でモデル化し、実際に使用されている情報(および入力のために提示する形式)をカテゴリに入れます。製品を表現するための特別なクラスは必要ありません。 – Durandal

答えて

0

プロジェクトのアーキテクチャを開始する前に、デザインパターンを読んでみてください。あなたがここに記述されています

問題は、私が持っているかもしれないようなカテゴリ「エレクトロニクス」 下の広告など、いくつかの広告が持っているかもしれない ことの違い...のすべてを処理する方法がわからないです カテゴリの「衣類」の下にある別の広告とは異なるさまざまなフィールド

は、Decoratorpatternの主要候補です。

あなたは抽象クラスやインタフェースの両方でそれを達成することができますが、私はあなたに考慮すべきもう一つの強力なツール与えるだろう:私はおそらく、このシナリオではどうなるのかComposition

のいずれかである、単一目的Interfacesの実装を検討していますbehaviourまたはcomponentに基づく。たとえば、広告ごとに価格が設定されますか?だから、私はInterfacePriceableと呼ばれる作成し、それを実装するクラスを持っているか、別のインターフェイスはそれを拡張します。ある意味では、クラスにいくつかの動作やコンポーネントを与えます。

あなたがしようとしているものを達成する方法はたくさんありますが、あなたのデザインパターンを知っています(よくあることに、共通の問題の解決済みの解決策、まあまあ)が重要な出発点です。

+0

非常に少ない機能性のために数多くのインターフェイスが好きですか?おそらく単純な例がありますか? – matn

+0

あなたは一般的な機能やコンポーネントを組み合わせることができますので、あまり目立ちません。それはあなたの問題(設計パターン)のためのテストされた解決策ですが、あなたが好きなようにそれを成形することができます。 – Mechkov

0

商品の範囲が本当に巨大である場合、質問で言及したように、各商品カテゴリまたはブランドの新しいクラスを作成することはお勧めしません。むしろ、あなたが持つことができるのは、特定の標準属性を持つ製品クラスだけです。には、ブランドと製品カテゴリが属性としてが含まれています。ブランド、製品カテゴリ、およびそれ以外のものは、それ自体が追加の属性を持つクラスである可能性がありますが、製品クラス自体に製品ID、名前、価格、画像などの他の標準フィールドを提供するメンバーがいます。

その他の非標準属性の場合は、属性名の値のマップを使用して、新しい属性をモデル化する可​​能性のある新しい製品を設計できるようにすることができます。 。

データベースのフロントと同じように、共通の属性セットを持つ製品用のテーブルと、製品カテゴリごとの追加の属性用の拡張テーブルを持つことができます。

私はそれが素晴らしい詳細を持っていないことを知っていますが、うまくいけば、あなたを始めるために十分な高レベルのアイデア。

+0

こんにちは、お返事ありがとうございます。私は、私がウルの答えを完全に理解しているかどうかは確かではない。 共有属性(text、price、dateCreated、locationなど)を持つメインクラスがいくつかありますが、それでは何ですか? – matn

関連する問題