サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
掃除・片付け
programming-tips.jp
Factory Method パターンとは、GoF によって定義されたデザインパターンの1つです。 ベースとなるクラスで共通の処理を実装して、その処理で使うオブジェクトの生成処理はサブクラスに任せる、という設計です。 本記事では、Factory Method パターンを Java のコード付きで解説していきます。 概要 Factory Method パターン(ファクトリメソッド・パターン)[1]とは、GoF (Gang of Four; 四人組)によって定義されたデザインパターンの1つである。 Factory Method パターンは、他のクラスのコンストラクタをサブクラスで上書き可能な自分のメソッドに置き換えることで、 アプリケーションに特化したオブジェクトの生成をサブクラスに追い出し、クラスの再利用性を高めることを目的とする。 Factory Method パターン - Wikiped
もしくは「目的別の索引」もご利用ください。 Java TIPS Factory Method パターン (図解/デザインパターン) (2024年05月09日) New! Abstract Factory パターン (図解/デザインパターン) (2024年05月03日) Strategy パターン (図解/デザインパターン) (2024年05月01日) Bridge パターン (図解/デザインパターン) (2024年05月01日) Adapter パターン (図解/デザインパターン) (2024年04月19日) Decorator パターン (図解/デザインパターン) (2024年04月12日) Composite パターン (図解/デザインパターン) (2024年04月05日) Mediator パターン (図解/デザインパターン) (2024年03月29日) Observer パターン
Abstract Factory パターンとは、GoF によって定義されたデザインパターンの1つです。 関連する複数のオブジェクトの生成処理を、動的にまとめて切り替えるための設計です。 本記事では、Abstract Factory パターンを Java のコード付きで解説していきます。 Abstract Factory パターン(アブストラクト・ファクトリ・パターン)[1]とは、GoF(Gang of Four; 4人のギャングたち)によって定義されたデザインパターンの1つである。 関連するインスタンス群を生成するための API を集約することによって、利用側がインスタンス群をまとめて変えられるようにし、さらに組み合わせ方を間違えないようにする[1]。 Abstract Factory パターン - Wikipedia Abstract Factory パターンとは、 関連する複数のオブジ
Bridge パターン(ブリッジ・パターン)とは、GoF(Gang of Four; 4人のギャングたち)によって定義されたデザインパターンの1つである。 「橋渡し」のクラスを用意することによって、クラスを複数の方向に拡張させることを目的とする。 Bridge パターン - Wikipedia Bridge パターンとは、 複雑になる継承関係を、委譲 を使ってシンプルにする という設計です。 Bridge は、日本語的に発音すると「ブリッジ」となります。 意味は「橋」ですね。 【Bridge パターンのイメージ】 ベースとなる図形クラスがあり、そのサブクラスとして 長方形 円形 があります。 さらに、図形の色として 赤色 緑色 があるとしましょう。 今回、色についても継承で実現しています。 これは少し過剰だとは思いますが、あくまで例ということでご容赦ください… さて、しばらくして「青色」を
Adapter パターンとは、GoF によって定義されたデザインパターンの1つです。 既存のクラスの修正なしに、インタフェースを変更して再利用できます。 本記事では、Adapter パターンを Java のコード付きで解説していきます。 概要 Adapter パターン(アダプター・パターン)とは、GoF によって定義されたデザインパターンの1つである。Adapter パターンを用いると、既存のクラスに対して修正を加えることなく、インタフェースを変更することができる。 Adapter パターン - Wikipedia Adapter パターンとは、 既存のクラスの 修正なし に、インタフェースを変更して再利用する という設計です。 Adapter は、日本語的に発音すると「アダプター」となります。 意味は「適合させるもの」ですね。 日本語でもそのまま「アダプター」で使われているので馴染みやす
もしくは「目的別の索引」もご利用ください。 Java TIPS Adapter パターン (図解/デザインパターン) (2024年04月19日) Decorator パターン (図解/デザインパターン) (2024年04月12日) Composite パターン (図解/デザインパターン) (2024年04月05日) Mediator パターン (図解/デザインパターン) (2024年03月29日) Observer パターン (図解/デザインパターン) (2024年03月22日) Strategy パターン (図解/デザインパターン) (2024年03月08日) Visitor パターン (図解/デザインパターン) (2024年03月08日) 小数を誤差なしで計算 (BigDecimal) (2024年02月27日) Template Method パターン (図解/デザインパターン) (
Decorator パターンとは、GoF によって定義されたデザインパターンの1つです。 機能を入れ子構造で持つことにより、複数の機能を動的に追加できます。 本記事では、Decorator パターンを Java のコード付きで解説していきます。 概要 Decorator パターン(デコレータ・パターン)とは、GoF(Gang of Four; 4人のギャングたち)によって定義されたデザインパターンの1つである。 このパターンは、既存のオブジェクトに新しい機能や振る舞いを動的に追加することを可能にする。 Decorator パターン - Wikipedia Decorator パターンとは、 機能を 入れ子 構造で持つことにより 複数の機能 を動的に追加する という設計です。 Decorator は、日本語的に発音すると「デコレータ」となります。 意味は「装飾者」ですね。「デコレーション」ケ
Composite パターンとは、GoF によって定義されたデザインパターンの1つです。 木構造を持つ再帰的なデータ構造を実現するための設計です。 本記事では、Composite パターンを Java のコード付きで解説していきます。 概要 Composite パターン(コンポジット・パターン)とは、GoF (Gang of Four; 4人のギャングたち) によって定義された デザインパターンの1つである。「構造に関するパターン」に属する。Composite パターンを用いるとディレクトリとファイルなどのような、木構造を伴う再帰的なデータ構造を表すことができる。 Composite パターン - Wikipedia Composite パターンとは、 木構造を持つ再帰的なデータ構造 を実現するための設計です。 Composite は、日本語的に発音すると「コンポジット」となります。 意味
Mediator パターンとは、GoF によって定義されたデザインパターンの1つです。 相互に依存する複数のクラスがある場合に、その依存関係をシンプルにする、という目的のための設計です。 本記事では、Mediator パターンを Java のコード付きで解説していきます。 概要 Mediator パターン は、ソフトウェアのデザインパターンの一つで、統一されたインタフェース の集合を提供するパターンである。 Mediator パターン - Wikipedia Mediator パターンとは、 相互に依存する複数のクラスがある場合に 仲介者をはさむことで、その依存関係をシンプルにする という設計です。 Mediator は、日本語的に発音すると「メディエーター」となります。 意味は「仲介者」ですね。 【 Mediator パターンのイメージ図 】 クラスA、クラスB、クラスC、クラスD は互
Observer パターンとは、GoF によって定義されたデザインパターンの1つです。 イベントを不特定多数に通知できます。依存関係の向きを逆転させるテクニックとしても使えますね。 本記事では、Observer パターンを Java のコード付きで解説していきます。 概要 Observer パターン(オブザーバー・パターン)とは、プログラム内のオブジェクトに関するイベント(事象)を他のオブジェクトへ通知する処理で使われるデザインパターンの一種。 Observer パターン - Wikipedia Observer パターンとは、 イベントを通知するクラスがあり そのクラスの 変更なし で、イベントを受け取りたいクラスを増やす(拡張する) という目的のための設計です。 もう少し簡単にいうと、 イベントを 不特定多数 のクラスに通知する という設計です。 また、依存関係の 向きを逆転 させるテ
Visitor パターンとは、GoF によって定義されたデザインパターンの1つです。 複数の異なるクラスに対して、それらのクラスの変更なしで一連の処理を拡張するための設計です。 本記事では、Visitor パターンを Java のコード付きで解説していきます。 概要 Visitor パターンは、オブジェクト指向プログラミング およびソフトウェア工学 において、 アルゴリズムをオブジェクトの構造から分離するためのデザインパターンである。分離による実用的な結果として、既存のオブジェクトに対する新たな操作を構造を変更せずに追加することができる。 Visitor パターン - Wikipedia Visitor パターンとは、 ある複数の異なるクラスがあり それらのクラスの変更なしで一連の処理を拡張する という目的のための設計です。 また、複数の異なるクラスに対して、横断的に (for文などで)
概要 Strategy パターン(ストラテジー -)は、コンピュータープログラミングの領域において、アルゴリズムを実行時に選択することができるデザインパターンである。 Strategy パターン - Wikipedia Strategy パターンとは、 ある1つのクラスがあり そのクラスの変更なしで、処理の一部を動的に切り替える という目的のための設計です。 Strategy は、日本語的に発音すると「ストラテジー」となります。 意味は「戦略」ですね。 【 Strategy パターンのイメージ図 】 ストラテジーA、ストラテジーB、ストラテジーC ... と追加していことで、いくらでも処理を拡張できるのがメリットです。 しかも、ストラテジーを使う側のクラスは修正が必要ありません。 いわゆる 開放閉鎖の原則 ソフトウェア要素(クラス、モジュール、関数など)は、拡張に対しては開いており、修正に
Flyweight パターンとは、GoF によって定義されたデザインパターンの1つです。 同じ内容のオブジェクトを再利用して、リソースを節約するという設計です。 本記事では、Flyweight パターンを Java のコード付きで解説していきます。 概要 Flyweight パターン(フライウェイト・パターン)とは、GoFによって定義されたデザインパターンの1つである。等価なインスタンスを別々の箇所で使用する際に、一つのインスタンスを再利用することによって計算資源の浪費を減らすことを目的とする。 Flyweight パターン - Wikipedia Flyweight パターンとは、内容の同じオブジェクトが必要となる場合に、 複数のオブジェクトは作らない 1つのオブジェクトを再利用(共有) してリソースを節約する という設計です。 例えば、 大きなオブジェクトを使う 小さなオブジェクトでも
Java 8 でラムダ式が言語仕様に追加されました。 そして、Java 8 で追加されたAPIには、ラムダ式で使うことを想定しているものがあります。(Stream や Optional など) ぜひラムダ式を理解して、Java 8 の API を使いこなしていきましょう。 本記事では、そんなラムダ式の基本的な使い方を解説していきます。 概要 さっそくコードを見てみましょう。 public void main() { final Runnable runnable = new Runnable() { @Override public void run() { System.out.println("Run!"); } }; runnable.run(); // Run! } メソッド内で Runnable インタフェースの 匿名クラス(無名クラス) を作成して、インスタンスも生成しています
シングルトン(Singleton) パターンは、オブジェクト指向プログラミングにおけるデザインパターンの1つです。 デザインパターンの中では比較的シンプルで理解しやすく、便利なこともあるため、使っているかたもいるかもしれません。 ただし、乱用は禁物です。 どのクラスからでも便利にアクセスできる、という理由だけでシングルトン・パターンを使っているのであれば、それは改善したほうがよいでしょう。 本記事の対象読者:シングルトン・パターンを使ったことのあるかた シングルトン・パターンとは Singleton パターンとは、そのクラスのインスタンスが1つしか生成されないことを保証するデザインパターンのことである。ロケールやルック・アンド・フィールなど、絶対にアプリケーション全体で統一しなければならない仕組みの実装に使用される。 Singleton パターン - Wikipedia Wikipedia
はじめに コードの意図を補足するためにコメントを書くことは多いと思います。 しかし、コメントを書きすぎていないでしょうか? 理想は、コメントがなくても理解できるコード、だと思っています。 それでは、コメントが不要な例と必要な例を見ていきましょう。 不要な例 コードが 何(what) をしているかをコメント コードが何(what)をしているのかは、コードを見ればわかります。 よって基本的にはコメントは不要です。 極端な例 // valueという変数に2を代入する final var value = 2; もう少しマイルドな例 // ファイルを読み込む final var text = Files.readString(Path.of("data.txt")); このようなコメントは不要でしょう。 コードだけで十分に理解できます。 クラスやメソッドに機械的にコメント 極端な例 /** * Bo
switch文を使って break を書き忘れる…意外とあるあるだと思います。 そんなswitch文を改善した、switch式 がJava 14から追加されました。 switch式 を使うことで、break文の書き忘れという単純なミスから解放されます。 本記事では、そんな switch式 の基本的な使い方をご紹介します。 概要 あらゆる式と同様、switch式は1つの値に評価され、文での使用が可能です。 フォール・スルーを防ぐためのbreak文が不要になるcase L ->ラベルを使用できます。switch式の値の指定には、yield文を使用します。 Java言語更新 Switch式 (Java SE 20) switch式は、Java 14から正式に言語仕様に追加されました。 上記のリンクは、公式ドキュメントによるswitch式の紹介です。一読することをおすすめします。 それではswit
Builder(ビルダー) パターンは、GoF によって定義されたデザインパターンの1つです。 本記事では GoF のパターンではなく、Java 標準API で使われているもう少し簡易的なパターンをご紹介します。 概要 Builder パターン(ビルダー・パターン)とは、GoF(Gang of Four; 4人のギャングたち)によって定義されたデザインパターンの1つである。 オブジェクトの生成過程を抽象化することによって、動的なオブジェクトの生成を可能にする。 Builder パターン - Wikipedia Wikipedia では、GoF による Builder パターンが紹介されています。 GoF によるパターンでは オブジェクトの生成過程を抽象化することによって、動的なオブジェクトの生成を可能にする とあります。 GoF のパターンも有用だと思いますが、本記事では割愛します。 興味
ストリームを使うと、List や 配列などの要素に対して、絞り込みや並び替えなどを便利に実行できます。 本記事では、そんなストリームの基本的な使い方を解説していきます。 対象読者:ラムダ式をある程度理解しているかた もし不安のあるかたは「ラムダ式の基本」も参考にしていただけたら幸いです。 概要 順次および並列の集約操作をサポートする要素のシーケンスです。 Stream (Java SE 20 & JDK 20) ストリームAPI を使うと、List や Set、配列 などの各要素に対して、 変換 絞り込み(フィルタ) 重複の除外 並び替え などの操作を便利に実行することができます。 ストリームの簡単なデータ遷移図です。 もととなる1つのソースからストリームを生成して、中間操作(いくらでも可能)して、最後に終端操作で結果を得ます。 ストリーム生成 中間操作 (複数OK) 終端操作 これが基本
個人的には、CONFIG と FINEST はあまり使っていません。 他のレベルで代用できたり、そこまで分ける必要性をあまり感じないためです。 もちろん、必要であれば CONFIG や FINEST を使うのも全然ありです。 さらに、Level の優先度は単純な数値であるため、独自の Level を定義することもできます。 SEVERE(重大) もっとも優先度が高く重要なログとなります。 SEVEREのログが出力されたら、ただちに対応が必要となるレベルです。 アプリケーションがクラッシュした サービスが継続できないような問題が発生した というときに使うのがよいかなと思います。 具体的には、非チェック例外である、 RuntimeException (とそのサブクラス) Error (とそのサブクラス) が発生したときに、SEVEREでログ出力することをおすすめします。 ログ出力メソッドには
カプセル化と情報隠蔽を実現するために、Javaではアクセス修飾子を使います。 アクセス修飾子(publicやprivateなど)を使うと、クラスのメンバをどこまで公開するか?どこまで非公開にするか?を制御できます。 本記事では、そんなアクセス修飾子の基本をご紹介します。 概要 6.6. Access Control The Java programming language provides mechanisms for access control, to prevent the users of a package or class from depending on unnecessary details of the implementation of that package or class. If access is permitted, then the accessed
スレッドの処理を一時的に止めるには、ミリ秒を指定する Thread.sleep がよく使われます。 実は TimeUnit クラスにも sleep メソッドがあります。 TimeUnit を使うと、Thread.sleep よりも少しだけソースコードの可読性がよくなります。 本記事では、そんなちょっとした TIPS をご紹介します。 Thread.sleep(long millis) public static void sleep(long millis) throws InterruptedException システム・タイマーとスケジューラが正確であることを前提として、現在実行中のスレッドを、指定されたミリ秒数の間、スリープ(一時的に実行を停止)させます。 Thread (Java SE 19 & JDK 19) Thread.sleep は、指定した時間(ミリ秒単位)の間、一時的に
Set は、Java コレクション・フレームワークの1つです。 重複のない複数の要素を管理します。 大量の要素を追加しても、基本操作である add や remove, contains のパフォーマンス低下が起こらないのが特徴です。 本記事では、そんな Set の基本的な使い方を解説していきます。 概要 重複要素のないコレクションです。 すなわち、セットは、e1.equals(e2)であるe1とe2の要素ペアは持たず、null要素を最大1つしか持ちません。 Set (Java SE 18 & JDK 18) Set は、List や配列のように複数の値を管理できます。 この値のことを 要素 とも呼びます。 List や 配列 との違いは、要素の順序を基本的に管理しないことです。(要素の順序を管理するSet実装もあります) 要素と要素とのつながりはなく、バラバラに持っているイメージです。 S
プリミティブ型の特徴 4.2. Primitive Types and Values Chapter 4. Types, Values, and Variables (Java SE 18 言語仕様) プリミティブ型の詳細な仕様が知りたいかたは、上記の公式言語仕様を参照することをおすすめします。 (ただし英語となります。残念ながら公式の日本語訳はなさそう) 1つめの特徴は Objectクラス を継承していない、ということです。 よって、Objectクラスの hashCode や equals といったメソッドは使えません。 // 非プリミティブ型の例 String str1 = "abc"; String str2 = "def"; System.out.println(str1.hashCode()); // 96354 System.out.println(str2.hashCode(
List はコレクション・フレームワークの1つです。 複数の要素を配列のように管理します。 しかも、配列と違いサイズを気にする必要はありません。 本記事では、そんな List の基本的な使い方を解説していきます。 Listの概要 順序付けられたコレクションです。シーケンスとも呼ばれます。 このインタフェースのユーザーは、リスト内のどこに各要素が挿入されるかを精密に制御できます。 ユーザーは整数値のインデックス(リスト内の位置)によって要素にアクセスしたり、リスト内の要素を検索したりできます。 List (Java SE 18 & JDK 18) List は順序付けされたコレクションです。 要素を追加するたびに 0, 1, 2, 3 ... とインデックスが割り振られて、厳密に順序が管理されます。 配列をイメージしていただくと分かりやすいかもしれません。 ただし、配列は生成するときに サイ
次のページ
このページを最初にブックマークしてみませんか?
『プログラミングTIPS!』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く