6 つの設計原則
単一責任の原則
クラス変更の理由は複数あってはならない。平たく言えば、クラスは 1 つの責任のみを担当します。
問題の原因: クラス T は、責任 P1 と責任 P2 という 2 つの異なる責任を負います。責任P1の要件の変更によりクラスTを変更する必要がある場合、元々正常に動作していた責任P2の機能が誤動作する可能性があります。
一言でまとめると: 1 つのクラスに少量のコードを入れることはできません
リヒター置換原則
1 サブクラスは親クラスの抽象メソッドを実装できますが、オーバーライドすることはできません。非抽象メソッド。
2. サブクラスは独自のメソッドを追加できます。
3. サブクラスのメソッドが親クラスのメソッドをオーバーライドする場合、メソッドの前提条件 (つまり、メソッドの仮パラメータ) は、親クラスのメソッドの入力パラメータよりも緩くなります。
4. サブクラスのメソッドが親クラスの抽象メソッドを実装する場合、メソッドの事後条件 (メソッドの戻り値) は親クラスの事後条件よりも厳しくなります。
一文の要約: 親クラスの実装されたメソッドを書き直さないようにしてください。
依存関係逆転の原則
をバイパスするために、インターフェイスやその他のメソッドを使用できます。高レベルのモジュールは、低レベルのモジュールに依存すべきではありません。抽象化に依存する必要があります。抽象化は詳細に依存すべきではありません。詳細は抽象化に依存する必要があります。
説明するための例を次に示します:
import java.util.LinkedList; import java.util.Queue; interface IEAT { public void eat();//抽象吃这个动作 } class EatApple implements IEAT { @Override public void eat() { //这里是吃苹果 System.out.print("eat a apple"); } } class EatWater implements IEAT { @Override public void eat() { // 这里是吃水 System.out.print("dringk water"); } } public class Human { public void dosomething(IEAT ieat)//我爱吃东西,吃什么呢,看传入什么 { ieat.eat(); } /* public void dosomething(String food)//我爱吃东西,吃什么呢,看传入什么 { if(food.equals("apple")) { //吃苹果 } if(food.equals("water")) { //喝水 } } */ public static void main(String[] args) { Human human=new Human(); /* human.dosomething("apple"); human.dosomething("water"); */ //给你吃个苹果 human.dosomething(new EatApple()); //再给你喝点水 human.dosomething(new EatWater()); } }
注釈は、私たちがよく使用するメソッドです。この方法は拡張には非常に不向きです。バナナやスイカを食べたい場合、dosomething に大量の判定を書かなければならないからです。書いているうちに混乱してきます。
つまり、一言で言えば、同じアクションを記述するために抽象インターフェースを使用し、そのアクションを実装する人とオブジェクトの間の結合を減らす
インターフェース分離の原則
Aクライアントは、必要のないインターフェイスに依存すべきではありません。クラスの別のクラスへの依存は、最小のインターフェイスに基づく必要があります。
問題の原因: クラス A はインターフェイス I を通じてクラス B に依存し、クラス C はインターフェイス I を通じてクラス D に依存します。インターフェイス I がクラス A とクラス B の最小インターフェイスではない場合、クラス B とクラス Dメソッドを実装する必要はありません。
一言でまとめると、魚と人間と同じように、魚には泳ぐことと鰓呼吸という 2 つの動作があり、人間には歩くことと食べることの 2 つの動作があります。これらの動作は 4 つすべてを含めてインターフェイスに記述することはできません。特に魚用と人間用の 2 つのインターフェイスに分割する必要があります。
デミットの法則
デミットの法則は、最も知られていない原理とも呼ばれ、1987年にアメリカのノースイースタン大学のイアン・ホランドによって初めて提案されました。平たく言えば、クラスが依存するクラスについての知識が少なければ少ないほど良いのです。つまり、依存クラスでは、どんなに複雑なロジックであっても、ロジックは可能な限りクラス内にカプセル化し、提供されるパブリックメソッド以外には情報が外部に漏洩しないようにする必要があります。
これは少し覚えにくいです。要約すると、父 1
開閉原則
これについては何も言うことはありません。既存のコードを変更して変更を加えるのではなく、ソフトウェア エンティティの動作を変更します。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
