open-closed-principle

    1

    1答えて

    「SOLID」の原則を学ぶ私はクラスにいくつかの拡張を追加する必要がある場合は、コンストラクタを変更することは大丈夫ですか?ビジネスの論理。 私が学んだことは、コンストラクタを変更するように見えますが、私は 'オープンクローズ'の原則に違反しますが、ロジックを実行するために別のクラスを注入する必要がある場合はどうすればいいですか?どのようにしてコンストラクタの変更なしでこれを行うことができますか?

    12

    3答えて

    私はオープン/クローズドの原則を理解しようとしています(私の場合、PHPの場合、実際には違いはありません)。 私が理解していることは、クラスがでないことです。変更するにはを開いてください。バグ修正のためのみ。クラスに新しいコードを追加したい場合は、新しいコードを作成して '古い'クラスを拡張する必要があります。それが新しいコードを追加できる唯一の方法です。私は、このことの利点を見ることができるよう

    0

    1答えて

    私はオープンとクローズド・プリンシプルに違反しているコントローラを持っています。私は特定の条件でこれを解決する方法を理解しようとしています。ここに実装があります。 ここで問題となるのは、新しい録画設定がある場合は、設定コントローラーに戻って新しい録画設定を追加する必要があります。 BasicRecordingとAdvanceRecordingをNotSolidRecordingSettingsCo

    -1

    1答えて

    私は特定のシステムイベントに基づいて通知を送信する学生情報に取り組んでいます。たとえば、生徒が遅刻または不在のマークが付いている場合、アプリケーションはユーザーのリスト(親、学校管理者など)に通知します。この通知は、使用可能なすべてのメソッド(SMS、電子メール)を使用して送信され、メッセージを配信します。各メソッドは、その制約に基づいて通知をフォーマットします。ここで は、通知を生成しますいくつ

    1

    1答えて

    このコードを書き直すことによって、この次の例で開封の原則を適用したいと考えています。 class MyQueue<E> extends ArrayList<E> implements Queue<E> { int front=0, back=0; MyQueue() { } … void put(E e) { add(back++, e); ...}

    2

    3答えて

    私は、列挙型を文字列のセットにマップする、辞書を照会するエレガントで拡張可能な方法を作成しようとしています。 私はこのクラスに辞書を持っているSearchFragmentsを持っています。次に、このクラスの消費者が単に「HasAny」を尋ねることができ、これが私が苦労しているところのビットで、表現のようないくつかのクエリを渡してブール型の答えを返します。 public class SearchFr

    1

    4答えて

    私はストラテジパターンを読んでいましたが、実装しようとしていましたが、私がオープンクローズドの原則に違反していると感じるストラテジ実装を決定するのに苦労しました。 戦略パターンでは、私たちはインターフェイスに基づいてコードを作成し、クライアントとのやりとりに基づいて戦略の実装を行います。私たちは、クライアントが上記オープン閉鎖原則どおり今 IStrategy str; if(strage

    7

    2答えて

    私は、ユーザーから提供されたマウスデータに基づいて幾何学的図形を描く簡単なプログラムを持っています。 私はマウスのトラッキング(マウスの移動履歴を持つリストを取得する)とシェイプと呼ばれる の1つのクラスを処理するクラスを持っています。このクラスからCircle、Rectangleなどの余分なShapesを導き出します。それらのすべてが抽象Draw()関数をオーバーライドします。 すべてうまく動作