ホームページ  >  記事  >  Java  >  古典的なデザインパターンをJDKで具体化

古典的なデザインパターンをJDKで具体化

巴扎黑
巴扎黑オリジナル
2016-11-26 09:18:521581ブラウズ

1.Singleton (単一ケース)
関数: クラスにインスタンスが 1 つだけあることを確認します。グローバル アクセス ポイントを提供します
JDK に反映されます:
(1)Runtime
(2)NumberFormat

2.Factory (静的ファクトリ) )
関数:
(1) コンストラクターの代わりにオブジェクトを作成します
(2) メソッド名はコンストラクターより明確です
JDK への反映:
(1) Integer.valueOf
(2) Class.forName

3.Factory メソッド)
関数: どのクラスをインスタンス化するかを決定するサブクラス
JDK に反映: Collection.iterator メソッド

4.Abstract Factory (Abstract Factory)
関数: 特定の型のオブジェクトを作成する
JDK に反映:
(1 ) java .sql パッケージ
(2) UIManager (swing 外観)

5.Builder (コンストラクター)
関数:
(1) 構築ロジックを別のクラスに入れる
(2) クラスの構築ロジックを分離する そしてパフォーマンス
JDK への反映: DocumentBuilder (org.w3c.dom)

6.Prototype (プロトタイプ)
機能:
(1) オブジェクトのコピー
(2) 浅いコピー、深いコピー
JDK への反映: オブジェクト。 Cloneable

7.Adapter(アダプター)
関数: 互換性のないインターフェースを互換性のあるものにする
JDK に反映:
(1)java.io.InputStreamReader(InputStream)
(2)java.io.OutputStreamWriter(OutputStream)

8.Bridge(ブリッジ)
機能: 抽象部分と実装部分を分離し、それぞれ独立して変更できるようにします
JDKに反映: java.util.loggingのハンドラーとフォーマッタ

9 .コンポジット(組み合わせ)

機能:結合オブジェクトと独立オブジェクトを一貫して扱う
JDKへの反映:
(1) org.w3c.dom
(2) javax.swing.JComponent#add(Component)

10 .Decorator(デコレータ)

機能: クラスに新しい関数を追加します。クラスの継承による爆発的な増加を防ぎます。 (外観)

機能:
(1) 対話型クラスのセットをカプセル化し、一貫した外部インターフェースを提供

(2) サブシステムをカプセル化し、サブシステム呼び出しを簡素化

​​ JDK への反映: java .util.logging package

12.Flyweight (flyweight)

機能: 共有オブジェクト、メモリの節約
JDK に反映:

(1) Integer.valueOf(int i); Character.valueOf(char c)

(2) 文字列定数プール

14. プロキシ(プロキシ)
機能:
(1) 複雑な実装内容を知らなくても透過的にプロキシオブジェクトを呼び出す
(2) プロキシクラスの機能を増やす

JDK に反映: 動的 RMI


15.Iterator (Iterator; )

関数: コレクションの反復をコレクション自体から分離
JDK に反映: イテレーター、列挙インターフェース

16.Observer (オブザーバー)

関数: 通知オブジェクトのステータスの変更が JDK に反映されます:

(1) java.util.Observer, Observable
(2) Swing のリスナー

17. Mediator (Coordinator)
機能: 複数のクラスの動作を調整するために使用
JDK への反映: Swing の ButtonGroup

18.Template メソッド(テンプレートメソッド)

機能:アルゴリズムの構造を定義、サブクラスは異なる部分のみ実装

JDKに反映:ThreadPoolExecutor.Worker

19.Strategy(ストラテジー)

機能:異なるアルゴリズムを提供

JDKに反映:4つの拒否ThreadPoolExecutor の戦略

20.Chain of Responsibility (責任の連鎖)

機能: リクエストはチェーン上のオブジェクトによって処理されますが、クライアントはリクエストがどのオブジェクトによって処理されるかわかりません

反映JDK の場合:
(1) java.util.logging.Logger はログを親ロガーに委任します
(2) ClassLoader の委任モデル

21.Command (コマンド)
関数:
(1) 実行する操作をカプセル化しますインターフェースの一貫性
​​(2) 呼び出し側と受信側を空間と時間で切り離す
JDK に反映: 呼び出し可能; ThreadPoolExecutor

22. 毎回 null をチェックする必要がなく、null 値を扱う同じインターフェースを持つオブジェクトであるかのように
JDKに反映: Collections.EMPTY_LIST


23.Interpreter(インタープリター)

機能: クラスのセットを使用して特定のOneルールを表現します

JDKに反映: java.util .regex.Pattern

クラス図: 四則演算

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:JAVA外部接続次の記事:JAVA外部接続