特殊文字列
. ^ $ [ ] * + ? | ( )
→メタ文字列
メタ文字列を単なる文字として使う場合は[\]を前に足す
\. \^ \$ \[ \] \* \+ \? \| \( \) \\
□とにかく何でもいい1文字[.]
半角の[.]で とにかくなんでもいい1文字を表現
ex. 私は...が..→私は早起きが苦手
□行の先頭と最後[^$]
行の先頭や最後にのみ存在する文字列を検索したい場合に[^$]
ex. ^ありがとう→ありがとうから始まるもの
ありがとう$→ありがとうで終わるもの
□同じ文字の繰り返し[* + ?]
同じ文字の繰り返しを表す正規表現は [*]、[+]、[?]の3つ
・[*]:[*]の直前の文字が0個以上連続するか
ex. おー*い→おい、おーい、おーーーい
・[+]:[+]の直前の文字が1個以上連続するか
ex. おー+い→おーい、おーーーい
・[?]:[?]の直前の文字が0個か1個だけ存在するか
ex. Windows?→Window、Windows
□何でもいい文字の連続[.*]
[* + ?]は[.]と併用可
ex. コーヒーが好き.*。→コーヒーが好きです。、コーヒーが好きかもね。
[.]が[*]であるもの→何でもいい1文字が0個以上連続するもの
□いずれかの文字列[|]
| で区切られた文字列のいずれかの文字列が存在するもの
ex. hoge|piyo→hoge、piyo
□指定した文字のどれか[[]]
[]中のどれか1つに合致するもの
ex. 今日は[晴曇雨]です→今日は晴です
A[A-Z]C→ABC
1[0-9]8→108
A[^A-Z0-9]Z→A−Z
[]の中で^→XX以外→2番目の文字はアルファベットと数字以外の文字
□グループ化[()]
まとめて数文字単位で処理
ex. (じゃ)+ーん→じゃーん、じゃじゃーん
明日(ぼく|わたし)は帰宅します→明日ぼくは帰宅します、明日わたしは帰宅します
ref:
http://www.mnet.ne.jp/~nakama/
. ^ $ [ ] * + ? | ( )
→メタ文字列
メタ文字列を単なる文字として使う場合は[\]を前に足す
\. \^ \$ \[ \] \* \+ \? \| \( \) \\
□とにかく何でもいい1文字[.]
半角の[.]で とにかくなんでもいい1文字を表現
ex. 私は...が..→私は早起きが苦手
□行の先頭と最後[^$]
行の先頭や最後にのみ存在する文字列を検索したい場合に[^$]
ex. ^ありがとう→ありがとうから始まるもの
ありがとう$→ありがとうで終わるもの
□同じ文字の繰り返し[* + ?]
同じ文字の繰り返しを表す正規表現は [*]、[+]、[?]の3つ
・[*]:[*]の直前の文字が0個以上連続するか
ex. おー*い→おい、おーい、おーーーい
・[+]:[+]の直前の文字が1個以上連続するか
ex. おー+い→おーい、おーーーい
・[?]:[?]の直前の文字が0個か1個だけ存在するか
ex. Windows?→Window、Windows
□何でもいい文字の連続[.*]
[* + ?]は[.]と併用可
ex. コーヒーが好き.*。→コーヒーが好きです。、コーヒーが好きかもね。
[.]が[*]であるもの→何でもいい1文字が0個以上連続するもの
□いずれかの文字列[|]
| で区切られた文字列のいずれかの文字列が存在するもの
ex. hoge|piyo→hoge、piyo
□指定した文字のどれか[[]]
[]中のどれか1つに合致するもの
ex. 今日は[晴曇雨]です→今日は晴です
A[A-Z]C→ABC
1[0-9]8→108
A[^A-Z0-9]Z→A−Z
[]の中で^→XX以外→2番目の文字はアルファベットと数字以外の文字
□グループ化[()]
まとめて数文字単位で処理
ex. (じゃ)+ーん→じゃーん、じゃじゃーん
明日(ぼく|わたし)は帰宅します→明日ぼくは帰宅します、明日わたしは帰宅します
ref:
http://www.mnet.ne.jp/~nakama/
templateは。「文字の形に穴が開いている薄いプラスチック板」のこと。
その穴をペンでなぞれば、手書きでも綺麗な文字が書けるわけ。
ペンなのか、マジックなのか、鉛筆なのか、筆なのか。
仕上がりは違うけど同じ文字が書ける。
templateは、形を決定する枠組みを提供するだけ。
TemplateMethodパターンは、
テンプレートの機能を持つパターン。
スーパークラスで処理の枠組みを決め、
サブクラスでその具体的内容を実装する。
スーパークラスでは、
アルゴリズムの流れの中で利用される抽象的メソッドと、
この抽象的なメソッドを利用した処理のアルゴリズムを定義するTemplateMethodを定義する。
ref:
http://www.techscore.com/tech/DesignPattern/TemplateMethod.html
その穴をペンでなぞれば、手書きでも綺麗な文字が書けるわけ。
ペンなのか、マジックなのか、鉛筆なのか、筆なのか。
仕上がりは違うけど同じ文字が書ける。
templateは、形を決定する枠組みを提供するだけ。
TemplateMethodパターンは、
テンプレートの機能を持つパターン。
スーパークラスで処理の枠組みを決め、
サブクラスでその具体的内容を実装する。
スーパークラスでは、
アルゴリズムの流れの中で利用される抽象的メソッドと、
この抽象的なメソッドを利用した処理のアルゴリズムを定義するTemplateMethodを定義する。
ref:
http://www.techscore.com/tech/DesignPattern/TemplateMethod.html
adapterは「適合させる」ゆう意味。
Adapterパターンは、
インタフェースに互換性のないクラス同士を組み合わせることが目的のパターン。
これまで利用していたメソッドAと同じ機能を、選りすぐれた形で提供するメソッドBを発見。が、
メソッドBは、メソッドAとは異なるインタフェースを実装しているため、
メソッドBを使用するには、あれこれ変更が必要。大変。
で、
メソッドAとメソッドBの違いを吸収するAdapterを準備。
少ない変更で新しいメソッドに乗り換えられる!
この目的のために
Adapterパターンは2つの方法を与えている。
一つは、継承する方法。もう一つは、委譲しちゃう方法。
ref:
http://www.techscore.com/tech/DesignPattern/Adapter.html
Adapterパターンは、
インタフェースに互換性のないクラス同士を組み合わせることが目的のパターン。
これまで利用していたメソッドAと同じ機能を、選りすぐれた形で提供するメソッドBを発見。が、
メソッドBは、メソッドAとは異なるインタフェースを実装しているため、
メソッドBを使用するには、あれこれ変更が必要。大変。
で、
メソッドAとメソッドBの違いを吸収するAdapterを準備。
少ない変更で新しいメソッドに乗り換えられる!
この目的のために
Adapterパターンは2つの方法を与えている。
一つは、継承する方法。もう一つは、委譲しちゃう方法。
ref:
http://www.techscore.com/tech/DesignPattern/Adapter.html
「繰り返す」ゆう意味。
日本語で「反復子」
Iteratorパターンは
要素の集まりを保有するオブジェクトの各要素に順番にアクセスする方法を提供する為のパターン。
たとえば
集約オブジェクトとしてListクラスを想定する。
Listクラスは、要素としていくつかのオブジェクトを持てる。
このListオブジェクトが持つ要素に順番にアクセスするような場合、
そのような順番で各要素にアクセスするかによって、様々さ走査方法がある。
名前順だったり、パラメータを利用した順番だったり。
これら走査方法は、Listでは提供していない。
目的によっても異なるし、沢山あるから、Listには用意し切れない。
で、
走査方法を与えるクラスをListとは別に独立させておき、
必要な走査方法を与えるクラスをユーザが自分で作成する。
結果、より柔軟な設計ができる。
プラス、
集約オブジェクトのクラスが変更になっても、影響範囲を小さく出来る。
Iteratorパターンでは、
何らかの集約体が必ずAggregateインタフェースを実装するようにしてる。
Aggregateとは、
「集合」ゆう意味で、Aggregateインタフェースでは、
Iteratorインタフェースの実装クラスを返す、iterator()メソッドを定義してるだけ。
Interatorインタフェースは、
この集約体をメンバ変数として持ち、
この集約体に次の要素が存在するかしないかをbooleanで返すhasNext()メソッドと、
次の要素を返すnext()メソッドを定義している。
ref:
http://www.techscore.com/tech/DesignPattern/Iterator.html
日本語で「反復子」
Iteratorパターンは
要素の集まりを保有するオブジェクトの各要素に順番にアクセスする方法を提供する為のパターン。
たとえば
集約オブジェクトとしてListクラスを想定する。
Listクラスは、要素としていくつかのオブジェクトを持てる。
このListオブジェクトが持つ要素に順番にアクセスするような場合、
そのような順番で各要素にアクセスするかによって、様々さ走査方法がある。
名前順だったり、パラメータを利用した順番だったり。
これら走査方法は、Listでは提供していない。
目的によっても異なるし、沢山あるから、Listには用意し切れない。
で、
走査方法を与えるクラスをListとは別に独立させておき、
必要な走査方法を与えるクラスをユーザが自分で作成する。
結果、より柔軟な設計ができる。
プラス、
集約オブジェクトのクラスが変更になっても、影響範囲を小さく出来る。
Iteratorパターンでは、
何らかの集約体が必ずAggregateインタフェースを実装するようにしてる。
Aggregateとは、
「集合」ゆう意味で、Aggregateインタフェースでは、
Iteratorインタフェースの実装クラスを返す、iterator()メソッドを定義してるだけ。
Interatorインタフェースは、
この集約体をメンバ変数として持ち、
この集約体に次の要素が存在するかしないかをbooleanで返すhasNext()メソッドと、
次の要素を返すnext()メソッドを定義している。
ref:
http://www.techscore.com/tech/DesignPattern/Iterator.html
J2EEプラットフォームは多層システムから成る。
・client層:client application, etc.
・presentation層:receive the request from client.
・business層:business logic and kepping data.
・integration層:manage the connection of outer resource like db.
・resource層:outer system like database.
J2EEパターンもこの多層システムに基づいて構成されている。
・patterns of presentation phase
・Intercepting Filter Pattern
リクエストの前後処理を行う。
・Front Controller Pattern
リクエスト処理を集中して管理するためのコントローラを提供する。
・View Helper Patter
表示用の整形に関係ないロジックをヘルパコンポーネントにカプセル化する。
・Composite View Pattern
原始的なサブコンポーネントから構成されたビューを生成する。
・Service to Worker Pattern
ディスパッチャコンポーネントを使ってFrontControllerPatternとViewHelperPatternとを結合し、より多くの仕事をビューに処理させる。
・patterns of business phase
・Business Delegate Pattern
プレゼン層とビジネス層とを切り離し、サービスに対するファサードやプロキシの役割を持つインタフェースを提供する。
・Value Object Pattern
ネットワークのトラフィックを減らして、層と層の間のデータ交換を行う。
・Session Facade Pattern
ビジネスオブジェクトの複雑さを隠蔽するために、ワークフローの処理を一箇所に纏める。
・Composite Entity Pattern
依存関係にある複数の永続オブジェクトを1つのエンティティBeanに纏めて、粗粒度のエンティティBeanを設計する。
・Value Object Assembler Pattern
複数のデータソースから複合バリューオブジェクトを組み立てる。
・Value List Handler Pattern
問い合わせの実行と結果のキャッシュ、および結果の処理方法を管理する。
・Service Locator Pattern
複雑なビジネスサービスの検索や生成の処理をカプセル化し、ビジネスサービスのファクトリを検索する。
・patterns of integration phase
・Data Access Object Pattern
データソースを抽象化し、データに対する透過的なアクセスを提供する。
・Service Activator Pattern
EJBコンポーネントの非同期処理を行う。
ref:
http://www.techscore.com/tech/J2EEPattern/introduction2.html
・client層:client application, etc.
・presentation層:receive the request from client.
・business層:business logic and kepping data.
・integration層:manage the connection of outer resource like db.
・resource層:outer system like database.
J2EEパターンもこの多層システムに基づいて構成されている。
・patterns of presentation phase
・Intercepting Filter Pattern
リクエストの前後処理を行う。
・Front Controller Pattern
リクエスト処理を集中して管理するためのコントローラを提供する。
・View Helper Patter
表示用の整形に関係ないロジックをヘルパコンポーネントにカプセル化する。
・Composite View Pattern
原始的なサブコンポーネントから構成されたビューを生成する。
・Service to Worker Pattern
ディスパッチャコンポーネントを使ってFrontControllerPatternとViewHelperPatternとを結合し、より多くの仕事をビューに処理させる。
・patterns of business phase
・Business Delegate Pattern
プレゼン層とビジネス層とを切り離し、サービスに対するファサードやプロキシの役割を持つインタフェースを提供する。
・Value Object Pattern
ネットワークのトラフィックを減らして、層と層の間のデータ交換を行う。
・Session Facade Pattern
ビジネスオブジェクトの複雑さを隠蔽するために、ワークフローの処理を一箇所に纏める。
・Composite Entity Pattern
依存関係にある複数の永続オブジェクトを1つのエンティティBeanに纏めて、粗粒度のエンティティBeanを設計する。
・Value Object Assembler Pattern
複数のデータソースから複合バリューオブジェクトを組み立てる。
・Value List Handler Pattern
問い合わせの実行と結果のキャッシュ、および結果の処理方法を管理する。
・Service Locator Pattern
複雑なビジネスサービスの検索や生成の処理をカプセル化し、ビジネスサービスのファクトリを検索する。
・patterns of integration phase
・Data Access Object Pattern
データソースを抽象化し、データに対する透過的なアクセスを提供する。
・Service Activator Pattern
EJBコンポーネントの非同期処理を行う。
ref:
http://www.techscore.com/tech/J2EEPattern/introduction2.html