「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Java のデザインパターンと例

Java のデザインパターンと例

2024 年 11 月 9 日に公開
ブラウズ:996

Design Patterns in Java with examples

Java のデザイン パターンとは何ですか?

設計パターンは、ソフトウェア設計における一般的な問題に対する再利用可能な解決策です。これらは、ソフトウェア開発、特に Java などのオブジェクト指向プログラミングのさまざまな状況に適用できるベスト プラクティスを表しています。

デザインパターンの種類

  • 作成パターン: オブジェクト作成メカニズムを扱います。
  • 構造パターン: クラスとオブジェクトの構成方法に関係します。
  • 行動パターン: オブジェクト間のコミュニケーションに焦点を当てます。

デザインパターンの使用法

  • コードの再利用性を促進します。
  • コードの可読性と保守性を向上させます。
  • 開発者間のコミュニケーションを促進します。

デザインパターン例

1. シングルトンパターン

    public class Singleton {
        private static Singleton instance;

        private Singleton() {}

        public static Singleton getInstance() {
            if (instance == null) {
                instance = new Singleton();
            }
            return instance;
        }
    }
長所:
  • 単一インスタンスへのアクセス制御。
  • 複数のインスタンスを防止することでメモリを節約します。
短所:
  • グローバルな状態のためテストが困難です。
  • 密結合が生じる可能性があります。

2. オブザーバーパターン

    import java.util.ArrayList;
    import java.util.List;

    interface Observer {
        void update(String message);
    }

    class Subject {
        private List observers = new ArrayList();

        public void addObserver(Observer observer) {
            observers.add(observer);
        }

        public void notifyObservers(String message) {
            for (Observer observer : observers) {
                observer.update(message);
            }
        }
    }
長所:
  • 被験者と観察者の間の疎結合を促進します。
  • 新しいオブザーバーを使用して簡単に拡張可能。
短所:
  • オブザーバーが多いとパフォーマンスが低下します。
  • 間接的な通信のためデバッグが困難。

3. ビルダーパターン

    class Product {
        private String part1;
        private String part2;

        public void setPart1(String part1) { this.part1 = part1; }
        public void setPart2(String part2) { this.part2 = part2; }
    }

    class Builder {
        private Product product = new Product();

        public Builder buildPart1(String part1) {
            product.setPart1(part1);
            return this;
        }

        public Builder buildPart2(String part2) {
            product.setPart2(part2);
            return this;
        }

        public Product build() {
            return product;
        }
    }
長所:
  • 複雑なオブジェクトの作成を簡素化します。
  • コードをより読みやすく、保守しやすくします。
短所:
  • 複数のビルダー クラスにより複雑さが増します。
  • 単純なオブジェクトには過剰になる可能性があります。

4. ファクトリーパターン

    interface Shape {
       void draw();
    }

    class Circle implements Shape {
       public void draw() { System.out.println("Drawing a Circle"); }
    }

    class Rectangle implements Shape {
       public void draw() { System.out.println("Drawing a Rectangle"); }
    }

    class ShapeFactory {
       public Shape getShape(String shapeType) {
          if (shapeType == null) return null;
          if (shapeType.equalsIgnoreCase("CIRCLE")) return new Circle();
          if (shapeType.equalsIgnoreCase("RECTANGLE")) return new Rectangle();
          return null;
       }
    }
長所:
  • オブジェクト作成ロジックをカプセル化します。
  • 既存のコードを変更せずに、新しい形状に簡単に拡張できます。
短所:
  • 複雑さを増す可能性のあるクラスを追加します。
  • 適切に使用しないと、ファクトリ クラスの急増につながる可能性があります。

ギャング オブ フォー (GoF)

「4 人組」とは、「デザイン パターン: 再利用可能なオブジェクト指向ソフトウェアの要素」というタイトルの影響力のある本の著者を指します。著者である Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides は、ソフトウェア エンジニアリングの基礎となった 23 の古典的な設計パターンを紹介しました。

結論

設計パターンは、開発者が堅牢で保守可能なシステムを作成するのに役立つ、Java プログラミングにおける重要なツールです。効果的なソフトウェア設計には、それらの用途、利点、欠点を理解することが重要です。 Gang of Four の貢献は、これらのパターンを効果的に適用するための強固な基盤を提供します。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/codegreen/design-patterns-in-java-with-examples-1klg?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3