問題タブ [ooad]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
42 参照

database - データベース内の Circular 依存クラスの永続化

この形式の2つのクラスがあると仮定します

これをデータベースに保存して取得する最良の方法は何ですか? これは、この種の関係に最適な設計ですか?

0 投票する
15 に答える
17075 参照

oop - ゲッターとセッターを回避する方法

私は多くの場所で「ゲッターとセッターは悪だ」と読みました。そして、私はその理由を理解しました。しかし、それらを完全に回避する方法はわかりません。Item は、アイテム名、数量、価格などに関する情報を持つクラスであり、ItemList はアイテムのリストを持つクラスです。総計を見つけるには:

上記の場合、getPrice() を回避するにはどうすればよいでしょうか? Item クラスは、getName、setName などを提供します。

どうすればそれらを回避できますか?

0 投票する
3 に答える
156 参照

architecture - この小さなプログラムのデザイン?

ここに画像の説明を入力してください少し理論的ですので、私の質問は気にしないでください。

先週、私は仕事のために面接をしました。そこで私は割り当てられました、そして後で彼らは質問をしました、そして私のデザインは不完全でした。だから私は仕事を得ることができませんでした。私は自分のデザインを共有しています。それを見て、私がどこが間違っているのか、そしてどのような解決策がそれの良いデザインになるのかを私に提案してください。

問題 これは、プールを建設する建設会社向けのパッケージです。スイミングプールは2つの部分からなるスイミングプール周辺エリアとそれ自体をプールします。両方(プールとその周辺)は長方形または円形(添付の写真を参照)にすることができるため、4つの可能な形状があります。プログラムは、影付きの面積(プールからコンクリートまでの外側の面積)を計算する必要があります。

****長方形の面積を計算する式**は長さ*幅*2 円形の面積を計算する式は2*2.1718

私のデザイン 私は2つのメソッドでIPoolインターフェイスを作成しました(1)CalculateCircularArea(2)CalculateRectangularArea。IPoolインターフェースを実装する2つのクラス(CircularPool、RectangularPool)を作成しました。

質問 長方形と円形以外の形状がある場合はどうなりますか。他に100の形状がある場合、将来の見通しを検討するソリューションは何でしょうか。ここでは、新しい形状が来るたびにインターフェイスを変更する必要があったため、私のデザインは良くありませんでした。

0 投票する
2 に答える
1019 参照

c# - 「デザインでAbstractBaseクラスを使用しないでください。しかし、モデリング/分析では」

私はSOAの初心者ですが、OOADの経験はあります。

SOA設計のガイドラインの1つは、「モデリングにのみ抽象クラスを使用する」です。デザインからそれらを省略してください。」抽象化の使用は、モデリング(分析フェーズ)に役立ちます。

分析フェーズで、BankAccount基本クラスを考え出しました。そこから派生した特殊なクラスは「FixedAccount」と「SavingsAccount」です。ユーザーのすべてのアカウント(アカウントのリスト)を返すサービスを作成する必要があります。要件を満たすためのサービスの構造はどうあるべきですか?

注: WCFを使用してコードのデモンストレーションを提供できれば素晴らしいと思います。

0 投票する
2 に答える
135 参照

php - PHPクラスモデリングの問題

私はいくつかのクラスを書き、私が何をすべきかについて道の分岐点に来ました。私の基本的な質問は、非常によく似た機能を持つクラス間でコードが重複しないようにするにはどうすればよいですか?特性は今のところ私にとって選択肢ではありません、そして私はそれらがとにかくここであまり役に立たないと思います。

次のクラスを実装しています。

これらのクラスは、SPLFileObjectタイプの機能を提供してくれます。私は次のようなことをすることができます

getFileSystemObjectメソッドを呼び出すたびに、新しいクラスオブジェクトが返されるか、そのパスにすでに割り当てられているオブジェクトが返されるため、ファイルシステム上の同じパスを指す複数のオブジェクトを作成する必要がなくなります。(おそらく最良のアイデアではありませんが、それが私が行ったものです。)

ここで少し問題が発生します。

オブジェクトを「ロック」するために使用するクラスの別のセットがあります。現在、私がロックしているオブジェクトは、ディレクトリかファイルかに関係なく、filesystem_objectsだけです。これは、ファイルをロックしようとしているphpプロセスのプロセスIDに基づいてファイルのロックファイルを作成するだけで十分に機能します。

私が今直面している問題は、同様にロックできるZipファイルオブジェクトを作成したいということです。ほとんどすべてのファイル/ディレクトリをロックできるようにしたいのですが、複製する必要はありません。コード。次のうちどれをすべきですか

現在、私はオプション3に傾倒していますが、それを望まない唯一の理由は、ファイルシステムのものを使用するときはいつでも、ライブラリの「ロッカー」部分を持たなければならないからです。それはより緊密に結合されます。

デザインについてコメントがあり、「SplFileObjectがこれのすべて/ほとんどを実行する」と言う人もいると思います。例としてここにメソッドを含めましたが、実装したすべてのメソッドがここにあるわけではないため、これが私が作成した機能だけではありません。ただし、この問題全体を回避する設計にたどり着く可能性があるため、これらすべてのコメントなどを歓迎します。

ありがとうございました

0 投票する
1 に答える
305 参照

jsf - JSFとSpringの統合

JSFとSpringおよびHibernateを使用した単純なログイン画面の実装。私はSpringでサービスとデータレイヤーBeanを作成し、それらをHibernateと統合しました。

JSFでユーザーIDとパスワードの2つのフィールドを使用してサインアップ(新規ユーザー作成)画面を定義し、それらをマネージドBeanに接続しました。(Bean名:ユーザー)ここでは、このBeanはドメインクラスでもあります。

次に、JSFビューの作成ボタンをクリックして、Service Beanメソッド(Spring Bean)を呼び出す必要があります。このため、私には2つの方法があることがわかります。

  1. 指定されたユーザーとパスワードを取得し、Spring Service Beanメソッドを呼び出すメソッドをUsers管理対象Beanに記述します。このメソッドは、DBにデータを保存するためのDAOBeanメソッドを呼び出します。しかし、ここで私の質問は、ドメインクラスでコントローラーのようなメソッドを書くことがどれだけ良い習慣であるかということです。

  2. 2番目の方法は、Spring Serviceオブジェクトをプロパティ(spring + jsf統合を使用して注入される)およびサービスBeanメソッドを呼び出すメソッドとして持つ新しいManagedBeanを定義することです。

私は正しいデザインをしていますか?何か問題がありますか?より良いデザインを提案してください。

ありがとう

0 投票する
4 に答える
204 参照

oop - クラスカーがある場合、コンバーチブルサブクラスカーであるかどうか。

たとえば、オブジェクトデザインにすでにCarクラスがあり、コンバーチブルの車のオブジェクトがいくつかあるとします。

Convertible別のクラスとサブクラスを定義することもできますが、たとえば、後でサブクラスでもあるCarクラスを作成し、後で、それでもあるクラスがある場合、それをどのように処理できますか?FourWheelDriveCarFourWheelDriveConvertible

上記のデザインは、クラスのフラグまたはプロパティと同じように、クラス内のブール値、およびクラスisConvertible内のブール値である他のデザインと比較してどうですか。したがって、この場合、追加のクラスを定義しません。CarisFourWheelDriveCarCar

更新:実際の例では、私たちのプロジェクトではCredential、ユーザーの情報を格納するクラスがありました:user_id、encrypted_pa​​ssword、email_addressなど。Facebook、Gmail、Yahoo、MySpace(JanRainを使用)、同僚からのログインを許可する場合サブクラス化するこれらすべてのクラスを追加することFacebookCredentialを提案しましたGmailCredentialYahooCredentialCredential。クラスがたくさんあることに少し圧倒されました。メソッドを見るときは、サブクラスがそれをオーバーライドするのか、それとも基本クラスのメソッドなのかを確認する必要があります。コードを使用してクレデンシャルのプロバイダー(Facebook、Gmailなど)を通知し、このプロバイダーコードを使用して適切な処理を実行します。(たとえば、一部のプロバイダーは電子メールアドレスを確認しましたが、一部は確認していません)。ですから、同僚の方法がより適切か複雑かはわかりません。

0 投票する
4 に答える
1651 参照

java - 一部のJavaコードでは、クラスDeckがCardクラスを拡張するのはなぜですか?

私はJavaでコードを読んでいますが、これはよく知らないものですが、クラスがDeck(トランプのデッキ用に)ある場合、すでに配列のインスタンス変数が含まれているのは奇妙に思えます。CardsなぜDeck拡張または継承するのCardでしょうか。クラスAはAがBの場合にのみクラスBを継承すると思いました(猫は動物であるため、猫は動物を継承します)。

コードは以下のとおりです。

0 投票する
4 に答える
226 参照

oop - インターフェイスの実装は独立している必要があります

オブジェクト指向プログラマーとしてやじを飛ばすようなレガシー コードに出くわしました。

よく使用されるパターンは次のとおりです 。インターフェイスには 2 つの実装があり、一方の実装が他方のメソッドを呼び出します。

今、実装がお互いを認識しないようにリファクタリングする必要があると思います。それを行う方法は簡単です。私が明確に理解できないのは、SOの善良な人々が私を助けてくれることを望んでいるのですが、なぜですか。

理論的な理由はわかります。オブジェクト指向の設計がひどいのです。しかし、私はここで悪魔の擁護者を演じて、質問しています - 2 つの実装が互いの知識を持っていることの実際的な欠点は何ですか。この (私の考えでは) アンチパターンを取り除くために、なぜ時間とお金を費やさなければならないのでしょうか?

これに関する情報やリンクをいただければ幸いです。

0 投票する
2 に答える
2105 参照

ruby - コマンドの複合デザインパターン

誰かがコマンドの複合を使用するRubyの良い例を持っていますか?これは、さまざまなデザインパターンの文献で言及されているデザインパターンハイブリッドであり、非常に強力に聞こえますが、興味深いユースケースやコードを見つけることができませんでした。