JDK、春とMyBatisのパターンを設計するために使用されます

、設計パターンのJDKは、
(1)構造モデル
1アダプタモード
java.util.Arrays asList#()
java.io.InputStreamReader(入力ストリーム)
java.io.OutputStreamWriterが(のOutputStream)
java.xml.bind.annotation。マシャル#adapters.xmlAdapter()
java.xml.bind.annotation.adapters.xmlAdapterマシャル#()
2ブリッジモード(抽象とコンクリートは抽象デカップリング達成するために、それは抽象的抽象独立して具体化することができることができるように変化。)
JDBC
3.組み合わせモード(処理対象と個々のオブジェクトの組み合わせを見て、クライアントは、換言すれば、等しい、方法のタイプは、その独自のパラメータ・タイプとして受け付ける。)
java.util.Listに# addAll(コレクション)
java.util.SetのaddAll#(コレクション)
java.util.MapのaddAll#(地図)
。4 Decoratorパターン
java.io.BufferedInputStreamの(入力ストリーム)
5.モードのファサード
のjava.langに.Class
6.フライ級(小さなオブジェクトのためのアクセス時間を短縮するために使用キャッシュ)
はjava.lang.Integer#のvalueOf(int型)
#VALUEOF Java.lang.Bollean(論理値)
がjava.lang.Byte#のvalueOf(バイト)
java.lang.Characterの#のvalueOf(CHAR)
7.プロキシモード
java.lang.reflect.Proxyの
(2)作成モード
8抽象ファクトリモード
java.sql.DriverManger#のgetConnection()
のjava.sql.ConnectionのcreateStatement#()
java.text.NumberFormat#のgetInstance()
java.util.Calender#のgetInstance()
9.ビルダーモード
java.lang.StringBuilder番号のapend( )
java.lang.StringBuffer追記#()
のjava.sql.PreparedStatement
10プラントの方法
Java.lang.Proxy#「newProxyInstance()
java.lang.Objectの#のtoString()
のjava.lang.ClassのnewInstance#()
されるjava.lang。 #にforNameクラス()
Java.lang.Bollean#のvalueOf(String)を
11.プロトタイプモデル(クラスのインスタンスは、自身のコピーを生成することができる。)
java.lang.Objectのクローン#()
java.lang.Cloneable
12.シングルトン
java.langRuntime getRuntime#()
春ビーン
13の動作(要求処理が終了するまでオブジェクトを分離するようにチェーン1つのオブジェクトからの要求を転送することにより、次のオブジェクト。)
java.util.logging.Loggerの#ログ()
は、javax.servlet.FilterのdoFilter(# )
14.コマンドモード(コマンドは、対象のパッケージ化、それが他のオブジェクトを返すように、プロセスへ送信、保存することができるように。)
java.lang.Runnableの()
15.解釈モード
通常、java.text.Format
16.反復モード
Java.uil.Iterator
17メディエーターモード(メッセージ分布に中間オブジェクトを使用し、クラス間の直接の依存性を減らす。)
java.util.Timer
java.util.concurrent.Executor#実行( )
java.util.concurrent.ExecutorService#提出()
java.lang.reflect.Methodオブジェクト#呼び出し()
18.あなたは抽象的な空のオブジェクトを扱うことができますnullオブジェクトモード(。)
#emptyList java.util.Collections()
java.util.Collections#emptyMap()
java.util.Collections#emptySet()
19.ビューアモード
たjava.util.EventListener
java.servlet.http.HttpSessionBindingListenerの
java.servlet.http。 HttpSessionAttributeListenerに
20ステートモードでは(あなたが簡単に内部状態の振る舞いに基づいて、実行時にオブジェクトを変更することができます。)
Java.uil.Iterator
Java.faces.lifecycle.LifeCyele#()を実行し
(21戦略モードアルゴリズムのセットにこのモデルを使用します一連のオブジェクトにパッケージ)
はjava.util.Comparator comoare#()
java.servlet.http.HttpServlet
java.servlet.FilterのdoFilter(#)
22のパターンテンプレートの方法(サブクラスではなく全体の重よりも、方法の一部をオーバーライドすることができるように書き、あなたはサブクラスがこれらの操作を無効にする必要が制御することができます。)
java.util.Collections#ソート()
java.io.InoutStream#読む()
java.util.AbstractList#のindexOf()
23ビジターモード(あなたが操作対象の前提の下で変更されないオブジェクトのセットは、オブジェクトの振る舞いを変更または拡張することができるような動作を維持するための便利な方法を提供することを目的とする。)

HTTPS://mp.weixin.qq .COM / S / QwlkU1T4RQaRqgs9uI3cPg


スプリングによって使用される2つの設計パターン
1.単純工場パターン
たBeanFactoryばね
2ファクトリメソッド
一般的に直接相分離を作成し、使用するために新たなオブジェクト、オブジェクトを作成する新しいアプリケーションが使用します、工場出荷時のパターンを使用して、つまり、アプリケーションは、ファクトリオブジェクトへのオブジェクトの責任を作成し、初期化します。
アプリケーションは、Beanを作成するために、独自のファクトリオブジェクトを持っています。アプリケーションは、春の自社工場管理の対象となる場合は、春の管理は、一般的な豆が、工場出荷時の豆ではありません。
スプリングFactoryBeanのは、ファクトリメソッドは、典型的なパターンです。
3.シングルモードの例では
、クラスのインスタンスを1つだけ確実にするために、それはグローバルなアクセスポイントへのアクセスを提供します。
デフォルト次のSpring Beanシングルトン=「真|偽」で、シングルトンある「?。」または範囲を指定します=
4.プロキシモード
春量Aopに、アドバイスはプロキシクラスの機能性を高めるために(通知)を使用しました。スプリングAOPがプロキシ機能モードの使用でこの原理を実現するために(1、JDKダイナミックプロキシー。
2、CGLIBバイトコード生成技術剤)セクションレベル、すなわち、プロキシクラスが生成されたプロキシクラスを補強する方法に基づき、およびプロキシクラスメソッドは、インターセプタが提供される前に、
そのブロックの内容高い点、アスペクト指向プログラミングの実装を行うことによって、プロキシ方式の機能を向上させます。
5. Observerパターン
オブジェクトの状態が変化するが、それに依存するすべてのオブジェクトが自動的に通知され、更新されている主題多く、間の依存関係の定義。
オブザーバーモードでの春は、一般的に、リスナーの実現の代わりに使用されます。ApplicationListenerとして。
6.ストラテジーパターンは、
それらを一つずつをカプセル化し、一連のアルゴリズムを定義し、それらを交換させます。このモードでは、アルゴリズムは、独立して、それを使用するクライアントの変化させることができます。
オブジェクトのインスタンス春に使用される戦略パターン
7テンプレートメソッド
JdbcTemplate春。
8.パッキングモード
クラス名に2つの形態でパッケージングモードで使用春:一つはクラス名であり、ラッパーを含有し、別のデコレータ含まれるクラス名です。基本的にオブジェクトを動的にいくつかの追加の責任を追加します。
9.アダプタモードの
実装:アダプターHandlerAdatper SpringMVC。
原則:HandlerAdatperは、規則に従って異なるハンドラのハンドラを実行します。
実装:
DispatcherServletのリターンハンドラHandlerMappingは、HandlerAdatper、処理ハンドラへの要求を開始します。ルールを検索し、対応するハンドラを実行することができ、HandlerAdapter
ハンドラは、実装後のModelAndView HandlerAdapterに戻り、最終的にHandlerAdapterでのModelAndView DispatchServeletに戻ります。
重要性を実現します:
そのようHandlerAdatperハンドラを簡単に拡張することが、唯一の新しいハンドラを追加し、対応するHandlerAdapterにする必要があります。ように、ばねは、このように、各コントローラを適応インタフェースを定義する
、対応するアダプタの実装クラス、代わりのコントローラアダプタようにそれぞれの方法があります。とき、拡張コントローラのように、唯一のSpringMVCの展開を完了するために、アダプタクラスを追加する必要があります。

MyBatisのに使用される第三に、デザインパターン

1.Builder模式、例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder。

2.工場パターン、例えばSqlSessionFactory、のObjectFactory、MapperProxyFactory。

実施例3シングルモード、例えばErrorContextそしてたLogFactory。

前記コアプロキシモード、MyBatisのが実装、例えばMapperProxy、ConnectionLogger、動的プロキシJDKで、さらに効果JavassistののCGLIBまたは遅延ローディングを達成するために使用executor.loaderパッケージ。

複合モード、例えばSqlNode各サブクラスChooseSqlNode等。

テンプレートパターン、例えばBaseExecutorとSimpleExecutor、ならびにすべてのサブクラスとBaseTypeHandler例えばIntegerTypeHandlerに記載の方法。

7.アダプタモード、例えば、その適応JDBC、ログMyBatisのインタフェースのlog4jの他のロギングフレームワーク。

8. Decoratorパターン、例えばキャッシュパッケージメディアは、各サブパケットcache.decoratorsデコレータを実現します。

9.このような反復モードPropertyTokenizerとして反復モードは、。

おすすめ

転載: www.cnblogs.com/heqiyoujing/p/11210634.html