一般的なデザインパターンのJava古典的なデザインパターンの23種類のプログラミング言語を表面

デザインパターンは3種類、23種の合計に分かれています:
Singletonパターン、Abstract Factoryパターン、Builderパターン、工場出荷時のパターン、プロトタイプモデル:スキーマを作成します。

構造モデル:アダプタモード、ブリッジモード、装飾的なパターン、複合モード、外観モデル、フライ級、プロキシモード

行動パターン:テンプレートメソッドモード、コマンドモード、イテレータパターン、オブザーバーパターン、仲介モデル、メモモード、インタプリタパターン、状態パターン、ストラテジパターン

この記事では、と説明しています:

スキーマを作成します:シングルケースモデル、Builderパターン、工場出荷時のパターンを、

構造モデル:アダプタモード、プロキシモード

行動パターン:Template Methodパターン、戦略パターン

GitHubのプロジェクト対応したアドレスします。https://github.com/kkzhilu/DesignPattern

あなたはの深い理解をダウンロードすることができます

 

スキーマの例を作成します
:シングルトン
対応するクラス:SingleTon.javaを

参考ブログ:のhttp://www.runoob.com/design-pattern/singleton-pattern.html

/ ***
* ----スキーマシングルトンを作成
*
* @authorのKXM
* /
publicクラスシングルトン{
/ ***
単一の設計パターンの*一般的な定義:クラスは、唯一のインスタンスを可能にします。アイデアの実現:このクラスをインスタンス化するための静的メソッドを提供しながら、クラスのコンストラクタの民営化をしてみましょう。
*
*レイジータイプ:静的メソッドで初期化。スペースのための時間。式を飢え(推奨しないが、時間が非常に重要です):文オブジェクトで初期化されます。時間のためのスペース。(推奨、スペースが問題ではありません)
*
*怠惰な人間のスレッドセーフ、あなたはゲンロックは本質的にスレッドセーフな式、クラスはオブジェクトを初期化するためにロードされると、効率が怠惰な人間よりも高いですが飢えプログラムの実行の効率に影響を与える、ゲンロックを追加する必要があります。
*
*なお、プライベートコンストラクタ
* /
//構成の単一の実施形態例のシングルモードコアに、プライベートメソッド定義
プライベートシングルトン(){}

//式を飢え:すなわち、クラス・ローダの初期化時
プライベート静的最終シングルトンを単一のシングルトン新しい=新しい();

公共の静的シングルトンgetTeacher(){
SINGLEを返す;
}

/分割*******************************ライン********************************* /
//怠惰なスタイルのダブルチェックロックは揮発性が原因新しいシングルトン()に主に並べ替え命令を禁止---、より良い言い回しをスレッド安全性は保証、発生する可能性がある問題
プライベート揮発性の静的シングルトンMYTEST =ヌル;

のpublic staticシングルトンgeTest(){
IF (MYTEST == NULL){
同期(SingleTon.class){
IF(MYTEST == NULL){
MYTEST =新しい新しいシングルトン();
}
}
}
MYTESTを返す;
}


/ ***
* ---より静的内部標準文言記述されたクラス
:*遅延初期化するかどうか
*かどうかマルチスレッドセーフ:
* @author KXM
* /
プライベート静的クラスSingletonHolder {
プライベート静的最終シングルトンインスタンス=新しい新しいシングルトン();
}
パブリック静的シングルトン最終のgetInstance()は、{
SingletonHolder.INSTANCEを返します;
}
}
Factoryパターン:
シンプル工場--- SimpleFactoryTon.java:

/ ***
* ----工場パターンモードタイプ(シンプル工場モード)を作成
* @author KXM
* /
publicクラスSimpleFactoryTon {
パブリックカーcreatCarFactory(int型NUM){
車CAR = NULL;
スイッチ(NUM){
ケース1:。
車=新しい車( "シトロエン");
BREAK;
ケース2:
車=新しい車( "シトロエン"、 "赤");
BREAK;
デフォルト:
CAR =新新車();
BREAK;
}
戻りCAR;
}
}


車{クラス
プライベート・ストリング・バンド、
プライベート文字列の色、
公共駐車(){}
公共駐車(ストリング・バンド){
this.band =バンド;
}
公共駐車(ストリング・バンド、文字色){
this.band =バンド。
this.color =色。
}
パブリック文字列getBand(){
戻りバンド。
}
公共ボイドsetBand(文字列帯){
this.band =バンド。
}
パブリック文字列GETCOLOR(){
戻り色。
}
公共ボイドsetColorを(文字色){
this.color =色。
}
}
工厂方法模式。

参考ブログます。https://www.jianshu.com/p/d0c444275827

抽象クラスのファクトリー{
パブリック抽象製品の製造();
}

publicクラスFactoryAは工場{延び

@Override
公共製品製造(){
)新しいProductAを(返します。
}
}

publicクラスFactoryBは工場{延び

@Override
公共製品製造(){
)(新しいProductBを返します。
}
}

抽象クラス商品{
パブリック抽象ボイド表示()。
}

publicクラスProductAは延び商品{

//具体产品A类
@Override
公共ボイドショー(){
System.out.printlnは( "生产出了产品A")。
}
}

publicクラスProductBが製品を拡張{

//具体产品B类
@Override
公共ボイドショー(){
System.out.printlnは(「製品Bの製造」);
}
}

/ **
*スキーマ----工場パターン(ファクトリメソッド)を作成
*利点は、単純な工場に比べ:
*オープンに沿って、より多くの-原則閉じ
単一責任の原則に沿って*を
*静的なファクトリメソッドを使用していない、継承の階層構造に基づいて形成することができる
*
*参考文献:HTTPS://www.jianshu.com/p/d0c444275827
* @authorのKXM
* /
パブリッククラスTestFactory {

パブリック静的無効メイン(文字列[] args){
//製品Aにクライアント
FactoryA mFactoryA新しい新しいFactoryA =();
mFactoryA.Manufacture()を表示();.

製品Bに//顧客
FactoryB =新しい新しいmFactoryB FactoryB();
mFactoryB.Manufacture()を表示();.
}
}
 

Builderパターン:
参考ブログます。https://blog.csdn.net/u010102390/article/details/80179754

おすすめ

転載: www.cnblogs.com/spark9988/p/11521598.html