問題タブ [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.
database - データベース内の Circular 依存クラスの永続化
この形式の2つのクラスがあると仮定します
これをデータベースに保存して取得する最良の方法は何ですか? これは、この種の関係に最適な設計ですか?
oop - ゲッターとセッターを回避する方法
私は多くの場所で「ゲッターとセッターは悪だ」と読みました。そして、私はその理由を理解しました。しかし、それらを完全に回避する方法はわかりません。Item は、アイテム名、数量、価格などに関する情報を持つクラスであり、ItemList はアイテムのリストを持つクラスです。総計を見つけるには:
上記の場合、getPrice() を回避するにはどうすればよいでしょうか? Item クラスは、getName、setName などを提供します。
どうすればそれらを回避できますか?
architecture - この小さなプログラムのデザイン?
少し理論的ですので、私の質問は気にしないでください。
先週、私は仕事のために面接をしました。そこで私は割り当てられました、そして後で彼らは質問をしました、そして私のデザインは不完全でした。だから私は仕事を得ることができませんでした。私は自分のデザインを共有しています。それを見て、私がどこが間違っているのか、そしてどのような解決策がそれの良いデザインになるのかを私に提案してください。
問題 これは、プールを建設する建設会社向けのパッケージです。スイミングプールは2つの部分からなるスイミングプール周辺エリアとそれ自体をプールします。両方(プールとその周辺)は長方形または円形(添付の写真を参照)にすることができるため、4つの可能な形状があります。プログラムは、影付きの面積(プールからコンクリートまでの外側の面積)を計算する必要があります。
****長方形の面積を計算する式**は長さ*幅*2 円形の面積を計算する式は2*2.1718
私のデザイン 私は2つのメソッドでIPoolインターフェイスを作成しました(1)CalculateCircularArea(2)CalculateRectangularArea。IPoolインターフェースを実装する2つのクラス(CircularPool、RectangularPool)を作成しました。
質問 長方形と円形以外の形状がある場合はどうなりますか。他に100の形状がある場合、将来の見通しを検討するソリューションは何でしょうか。ここでは、新しい形状が来るたびにインターフェイスを変更する必要があったため、私のデザインは良くありませんでした。
c# - 「デザインでAbstractBaseクラスを使用しないでください。しかし、モデリング/分析では」
私はSOAの初心者ですが、OOADの経験はあります。
SOA設計のガイドラインの1つは、「モデリングにのみ抽象クラスを使用する」です。デザインからそれらを省略してください。」抽象化の使用は、モデリング(分析フェーズ)に役立ちます。
分析フェーズで、BankAccount基本クラスを考え出しました。そこから派生した特殊なクラスは「FixedAccount」と「SavingsAccount」です。ユーザーのすべてのアカウント(アカウントのリスト)を返すサービスを作成する必要があります。要件を満たすためのサービスの構造はどうあるべきですか?
注: WCFを使用してコードのデモンストレーションを提供できれば素晴らしいと思います。
php - PHPクラスモデリングの問題
私はいくつかのクラスを書き、私が何をすべきかについて道の分岐点に来ました。私の基本的な質問は、非常によく似た機能を持つクラス間でコードが重複しないようにするにはどうすればよいですか?特性は今のところ私にとって選択肢ではありません、そして私はそれらがとにかくここであまり役に立たないと思います。
次のクラスを実装しています。
これらのクラスは、SPLFileObjectタイプの機能を提供してくれます。私は次のようなことをすることができます
getFileSystemObjectメソッドを呼び出すたびに、新しいクラスオブジェクトが返されるか、そのパスにすでに割り当てられているオブジェクトが返されるため、ファイルシステム上の同じパスを指す複数のオブジェクトを作成する必要がなくなります。(おそらく最良のアイデアではありませんが、それが私が行ったものです。)
ここで少し問題が発生します。
オブジェクトを「ロック」するために使用するクラスの別のセットがあります。現在、私がロックしているオブジェクトは、ディレクトリかファイルかに関係なく、filesystem_objectsだけです。これは、ファイルをロックしようとしているphpプロセスのプロセスIDに基づいてファイルのロックファイルを作成するだけで十分に機能します。
私が今直面している問題は、同様にロックできるZipファイルオブジェクトを作成したいということです。ほとんどすべてのファイル/ディレクトリをロックできるようにしたいのですが、複製する必要はありません。コード。次のうちどれをすべきですか
現在、私はオプション3に傾倒していますが、それを望まない唯一の理由は、ファイルシステムのものを使用するときはいつでも、ライブラリの「ロッカー」部分を持たなければならないからです。それはより緊密に結合されます。
デザインについてコメントがあり、「SplFileObjectがこれのすべて/ほとんどを実行する」と言う人もいると思います。例としてここにメソッドを含めましたが、実装したすべてのメソッドがここにあるわけではないため、これが私が作成した機能だけではありません。ただし、この問題全体を回避する設計にたどり着く可能性があるため、これらすべてのコメントなどを歓迎します。
ありがとうございました
jsf - JSFとSpringの統合
JSFとSpringおよびHibernateを使用した単純なログイン画面の実装。私はSpringでサービスとデータレイヤーBeanを作成し、それらをHibernateと統合しました。
JSFでユーザーIDとパスワードの2つのフィールドを使用してサインアップ(新規ユーザー作成)画面を定義し、それらをマネージドBeanに接続しました。(Bean名:ユーザー)ここでは、このBeanはドメインクラスでもあります。
次に、JSFビューの作成ボタンをクリックして、Service Beanメソッド(Spring Bean)を呼び出す必要があります。このため、私には2つの方法があることがわかります。
指定されたユーザーとパスワードを取得し、Spring Service Beanメソッドを呼び出すメソッドをUsers管理対象Beanに記述します。このメソッドは、DBにデータを保存するためのDAOBeanメソッドを呼び出します。しかし、ここで私の質問は、ドメインクラスでコントローラーのようなメソッドを書くことがどれだけ良い習慣であるかということです。
2番目の方法は、Spring Serviceオブジェクトをプロパティ(spring + jsf統合を使用して注入される)およびサービスBeanメソッドを呼び出すメソッドとして持つ新しいManagedBeanを定義することです。
私は正しいデザインをしていますか?何か問題がありますか?より良いデザインを提案してください。
ありがとう
oop - クラスカーがある場合、コンバーチブルサブクラスカーであるかどうか。
たとえば、オブジェクトデザインにすでにCar
クラスがあり、コンバーチブルの車のオブジェクトがいくつかあるとします。
Convertible
別のクラスとサブクラスを定義することもできますが、たとえば、後でサブクラスでもあるCar
クラスを作成し、後で、それでもあるクラスがある場合、それをどのように処理できますか?FourWheelDrive
Car
FourWheelDrive
Convertible
上記のデザインは、クラスのフラグまたはプロパティと同じように、クラス内のブール値、およびクラスisConvertible
内のブール値である他のデザインと比較してどうですか。したがって、この場合、追加のクラスを定義しません。Car
isFourWheelDrive
Car
Car
更新:実際の例では、私たちのプロジェクトではCredential
、ユーザーの情報を格納するクラスがありました:user_id、encrypted_password、email_addressなど。Facebook、Gmail、Yahoo、MySpace(JanRainを使用)、同僚からのログインを許可する場合サブクラス化するこれらすべてのクラスを追加することFacebookCredential
を提案しましたGmailCredential
YahooCredential
Credential
。クラスがたくさんあることに少し圧倒されました。メソッドを見るときは、サブクラスがそれをオーバーライドするのか、それとも基本クラスのメソッドなのかを確認する必要があります。コードを使用してクレデンシャルのプロバイダー(Facebook、Gmailなど)を通知し、このプロバイダーコードを使用して適切な処理を実行します。(たとえば、一部のプロバイダーは電子メールアドレスを確認しましたが、一部は確認していません)。ですから、同僚の方法がより適切か複雑かはわかりません。
java - 一部のJavaコードでは、クラスDeckがCardクラスを拡張するのはなぜですか?
私はJavaでコードを読んでいますが、これはよく知らないものですが、クラスがDeck
(トランプのデッキ用に)ある場合、すでに配列のインスタンス変数が含まれているのは奇妙に思えます。Cards
なぜDeck
拡張または継承するのCard
でしょうか。クラスAはAがBの場合にのみクラスBを継承すると思いました(猫は動物であるため、猫は動物を継承します)。
コードは以下のとおりです。
oop - インターフェイスの実装は独立している必要があります
オブジェクト指向プログラマーとしてやじを飛ばすようなレガシー コードに出くわしました。
よく使用されるパターンは次のとおりです 。インターフェイスには 2 つの実装があり、一方の実装が他方のメソッドを呼び出します。
今、実装がお互いを認識しないようにリファクタリングする必要があると思います。それを行う方法は簡単です。私が明確に理解できないのは、SOの善良な人々が私を助けてくれることを望んでいるのですが、なぜですか。
理論的な理由はわかります。オブジェクト指向の設計がひどいのです。しかし、私はここで悪魔の擁護者を演じて、質問しています - 2 つの実装が互いの知識を持っていることの実際的な欠点は何ですか。この (私の考えでは) アンチパターンを取り除くために、なぜ時間とお金を費やさなければならないのでしょうか?
これに関する情報やリンクをいただければ幸いです。
ruby - コマンドの複合デザインパターン
誰かがコマンドの複合を使用するRubyの良い例を持っていますか?これは、さまざまなデザインパターンの文献で言及されているデザインパターンハイブリッドであり、非常に強力に聞こえますが、興味深いユースケースやコードを見つけることができませんでした。